PHP array_search preg

时间:2016-03-18 12:09:22

标签: php arrays regex preg-match

我想搜索' 01。'以数组的编号开头。

预期产出:

1 => string '01.02' (length=5)
2 => string '01.03' (length=5)
3 => string '01.04' (length=5)
32 => string '02.02' (length=5)
33 => string '02.03' (length=5)
34 => string '02.04' (length=5)
35 => string '02.05' (length=5)

我的代码:

$key = array_search('/^01./', $tomb_datum);
echo $key;
var_dump($key);

这些preg匹配不起作用。

3 个答案:

答案 0 :(得分:4)

有一个专门用于此目的的功能,preg_grep。它将使用正则表达式作为第一个参数,将数组作为第二个参数。

请参阅以下示例:https://eval.in/538589

$haystack = array (
  '01.02',
  '01.03',
  '02.05',
  '02.07'
);

$matches  = preg_grep ('/^01/i', $haystack);

print_r ($matches);

答案 1 :(得分:0)

如果您正在寻找过滤数组,请使用array_filter:

$resultArray = array_filter($array, function($elm) {
  if (preg_match('/^01/', $elm)) {
    return true;
  } 
  return false;
});

希望这有帮助。

答案 2 :(得分:0)

您可以使用T-Regx library来使用各种数组过滤器:

pattern('^01.')->forArray($tomb_datum)->filter()

您还可以使用其他方法,例如:

  • filter()-用于常规(顺序)数组
  • filterAssoc()-用于关联数组(filterAssoc()保留键)
  • filterByKeys()-通过键而不是值过滤数组

PS:请注意,使用T-Regx时不需要/.?/分隔符!