如何使用regEx在PHP数组中搜索子字符串

时间:2011-10-21 08:45:10

标签: regex arrays search substring

   $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')
            )

如何使用php和regExp获取包含foo子字符串及其值的所有子数组。

预期产出:

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

3 个答案:

答案 0 :(得分:2)

你应该可以用

来做
preg_grep($pattern,$array)

答案 1 :(得分:0)

$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;
    }
  }
}

答案 2 :(得分:0)

$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);