Как искать подстроку в массиве PHP, используя regExp - PullRequest
1 голос
/ 21 октября 2011
   $array = array(
            array('foo_test1','demo_test1'),
            array('foo_test2','demo_test2'),
            array('blah_test1','exp_test1'),
            array('blah_test2','exp_test2'),
            array('foo_test3','demo_test3')
            )

Как получить весь подмассив, который содержит foo подстроку со своим значением, используя php и regExp.

Ожидаемый результат:

$array = array(
        array('foo_test1','demo_test1'),
        array('foo_test2','demo_test2'),
        array('foo_test3','demo_test3')
        )

Ответы [ 3 ]

2 голосов
/ 30 октября 2012

Вы должны быть в состоянии сделать это с

preg_grep($pattern,$array)
0 голосов
/ 30 октября 2012
$array = array(
    array('foo_test1','demo_test1'),
    array('foo_test2','demo_test2'),
    array('blah_test1','exp_test1'),
    array('blah_test2','exp_test2'),
    array('foo_test3','demo_test3')
);

$search = 'foo';
$res = array();
foreach ($array as $arr) {
    foreach ($arr as $value) {
        if (preg_match('~'.preg_quote($search,'~').'~',$value)) {
        // if one of the values in that array
        // has the search word in it...
            $res[] = $arr; break;
            // push it into the $res and break
            // the inner foreach loop
        }
    }
}
print_r($res);
0 голосов
/ 21 октября 2011
$input  = array( /* your array */ );
$output = array();

foreach ( $input as $data ) {
  $len = length($data);
  for ( $i = 0; $i < $len; ++$i ) {
    if ( strpos($data[$i], 'foo') > -1 ) {
      $output[] = $data;
      break;
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...