Vérification de plusieurs valeurs strpos

je me demande comment effectuer plusieurs contrôles strpos.

permettez-moi de clarifier:

Je veux que strpos vérifie la variable "COLOR" pour voir si des nombres de 1 à 8 sont n'importe où dans la variable. Si des nombres de 1 à 8 sont présents, je veux faire écho à "selected".

exemples:

Disons que seul le nombre 1 est dans la variable, il sera echo "selected".

Disons que les nombres 1 2 et 3 sont dans la variable, il will echo "sélectionné."

Disons que les nombres 3 9 25 sont dans la variable, il will echo "sélectionné" (à cause de ce 3!!).

Disons que seul le nombre 9 est dans la variable, il ne fera pas écho.

Disons que les nombres 9 25 48 sont dans le variable, il ne sera pas écho.



5
demandé sur Benjamin 2013-10-06 09:25:44

5 réponses

j'ai simplement utilisé l'instruction OU (||)

<?php 
  if (strpos($color,'1') || strpos($color,'2') || strpos($color,'3') || strpos($color,'4') || strpos($color,'5') || strpos($color,'6') || strpos($color,'7') || strpos($color,'8') === true) 
   {
    //do nothing
   } else { 
            echo "checked"; 
          } 
?>
10
répondu Chad Cardiff 2013-10-06 05:33:52

j'ai trouvé les réponses ci-dessus, incomplète et avec ma propre fonction:

/**
 * Multi string position detection. Returns the first position of $check found in 
 * $str or an associative array of all found positions if $getResults is enabled. 
 * 
 * Always returns boolean false if no matches are found.
 *
 * @param   string         $str         The string to search
 * @param   string|array   $check       String literal / array of strings to check 
 * @param   boolean        $getResults  Return associative array of positions?
 * @return  boolean|int|array           False if no matches, int|array otherwise
 */
function multi_strpos($string, $check, $getResults = false)
{
  $result = array();
  $check = (array) $check;

  foreach ($check as $s)
  {
    $pos = strpos($string, $s);

    if ($pos !== false)
    {
      if ($getResults)
      {
        $result[$s] = $pos;
      }
      else
      {
        return $pos;          
      }
    }
  }

  return empty($result) ? false : $result;
}

Utilisation:

$string  = "A dog walks down the street with a mouse";
$check   = 'dog';
$checks  = ['dog', 'cat', 'mouse'];

#
# Quick first position found with single/multiple check
#

  if (false !== $pos = multi_strpos($string, $check))
  {
    echo "$check was found at position $pos<br>";
  }

  if (false !== $pos = multi_strpos($string, $checks))
  {
    echo "A match was found at position $pos<br>";
  }

#
# Multiple position found check
#

  if (is_array($found = multi_strpos($string, $checks, true)))
  {
    foreach ($found as $s => $pos)
    {
      echo "$s was found at position $pos<br>";         
    }       
  }
8
répondu Nisse Engström 2018-02-21 00:18:57

essayer preg match pour plusieurs

if (preg_match('/word|word2/i', $str))

strpos() avec aiguilles multiples?

5
répondu user3270784 2017-05-23 11:53:18

Si toute valeur est séparé par un espace en valeur, alors vous pouvez faire ce qui suit. Sinon l'ignorer.

il est nécessaire parce que si vous avez $color="25"; puis strpos trouverez à la fois 2, 5 et 25 ainsi résultat requis ne viendra pas

<?php
$color='1 25 48 9 3';
$color_array = explode(" ",$color);

$find = range(1,8);//array containing 1 to 8

$isFound = false;
foreach($find as $value) {
    if(in_array($value, $color_array)) 
    {
        $isFound = true;
        break;
    }
}

if($isFound) {
    echo "Selected";
}
?>
1
répondu Salim 2013-10-06 05:59:27
if (preg_match('/string1|string2|string3/i', $str)){
  //if one of them found
}else{
 //all of them can not found
}
0
répondu hakiko 2018-02-16 09:19:55