寻找可能性来检测 $string
是否匹配 $array
中的所有单词。
事先不知道单词顺序(用户输入的文本)。
array(
'test',
'shmest',
'zest',
'fest',
'etcest'
);
我明白我可以:
$is_match = true;
foreach ($array as $word) {
if (!strpos($string, $word) === false) {
$is_match = false;
break;
}
}
(可以|应该)我通过 preg_match[_all] 制作类似上面的东西吗?
编辑1
优先考虑的是更少的内存和更快的工作。
测试了 2 个答案和自己的以上 https://eval.in/144266 所以我的最快
并且$string
可以包含任何符号
最佳答案
您可以使用 LookAheads 创建 RegEx:
$regex='/(?=.*?'.implode(')(?=.*?', $needles).')/s';
然后简单检查你的字符串:
if (preg_match($regex,$string)===1) echo 'true';
演示代码:https://eval.in/144296
解释正则表达式:http://regex101.com/r/eQ0hU4
关于php - preg_match 字符串中的所有单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23381471/