我有一个简单的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);