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


Wildcard search in array with regex in PHP

我有一个简单的PHP数组:

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

我有以下函数来搜索以'mi'开头的字符串:

$array = preg_grep("/^Mi.*/", $array);

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

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

我不熟悉正则表达式。由于

简单,你改变你的regex模式,并删除^指定它必须是字符串的开始。使用i修饰符可以实现大小写不敏感。

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

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

编辑:你也可以删除.* (s)在这种情况下,只匹配字母。

为将来参考,Regex101.com和PHPLiveRegex.com将为您学习正则表达式创造奇迹。

1)你的正则表达式匹配"字符串的开始"锚,^。要匹配任何位置,只需移除锚。

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