使用PHP中的正则表达式在数组中进行通配符搜索

时间:2014-05-15 22:18:16

标签: php arrays regex search

我有一个简单的PHP数组:

$array = array('Michael','Marian','Martina');

我有以下功能来搜索以' mi':

开头的字符串
$array = preg_grep("/^Mi.*/", $array);

1)如何修改正则表达式以搜索字符串的任何部分而不仅仅是字符串的开头?例如,搜索ar会返回Marian

2)如何使其不区分大小写?例如,搜索AR也会返回Marian

我是正则表达式的新手。感谢

2 个答案:

答案 0 :(得分:1)

1)你的正则表达式匹配"字符串的开头"锚,^。要匹配任何地方,只需删除锚点。

2)使用不区分大小写的修饰符。这些是在最后的斜杠之后,可以在这里找到:http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php。示例:$array = preg_grep("/^Mi.*/i", $array);

答案 1 :(得分:1)

很简单,你改变你的正则表达式模式并删除^,它指定它必须是字符串的开头。使用i修饰符可以实现不区分大小写。

$matching_letters = 'ri';
$array = preg_grep("/{$matching_letters}/i", $array);

// Marian

演示:https://eval.in/151916

修改:在这种情况下,你也可以删除.*(s),然后匹配这些字母。

为了将来参考,Regex101.comPHPLiveRegex.com会为您学习正则表达式带来奇迹。