Определите несколько игл, используя стрипы - PullRequest
1 голос
/ 20 апреля 2011

Как я могу определить несколько игл и по-прежнему выполнять те же действия ниже.Я пытаюсь определить дополнительные ключевые слова, такие как числа, цифры и т. Д ... на данный момент я должен создать дубликат цикла if с незначительным изменением ключевого слова.

if (stripos($data, 'digits') !== false) {
$arr = explode('+', $data);

for ($i = 1; $i < count($arr); $i += 2) {
    $arr[$i] = preg_replace('/\d/', '', $arr[$i]);
}

$data = implode('+', $arr);
}

Ответы [ 3 ]

3 голосов
/ 20 апреля 2011

Создать функцию, которая перебирает массив?

function check_matches ($data, $array_of_needles)
{
   foreach ($array_of_needles as $needle)
   {
        if (stripos($data, $needle)!==FALSE)
        {
             return true;
        }
   }

   return false;
}

if (check_matches($data, $array_of_needles))
{
   //do the rest of your stuff
}

- изменить точку с запятой

0 голосов
/ 28 декабря 2014

Хотя предыдущие ответы верны, но я бы хотел добавить все возможные комбинации, например, вы можете передать иглу в виде массива, строки или целого числа.
Для этого вы можете использовать следующий фрагмент.

function strposAll($haystack, $needles){
    if(!is_array($needle)) $needles = array($needles); // if the $needle is not an array, then put it in an array
    foreach($needles as $needle)
        if( strpos($haystack, $needle) !== False ) return true;
    return false;
}

Теперь вы можете использовать второй параметр в виде массива, строки или целого числа, как хотите.

0 голосов
/ 27 августа 2013
function strposa($haystack, $needles=array(), $offset=0) {
  $chr = array();
  foreach($needles as $needle) {
    $res = strpos($haystack, $needle, $offset);
    if ($res !== false) $chr[$needle] = $res;
  }
  if(empty($chr)) return false;
  return min($chr);
}

Использование:

$array  = array('1','2','3','etc');

if (strposa($data, $array)) {
  $arr = explode('+', $data);

  for ($i = 1; $i < count($arr); $i += 2) {
    $arr[$i] = preg_replace('/\d/', '', $arr[$i]);
  }

  $data = implode('+', $arr);

} else {
  echo 'false';
}

функция взята из https://stackoverflow.com/a/9220624/1018682

...