php - preg_match 字符串中的所有单词

标签 php preg-match

寻找可能性来检测 $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/

相关文章:

php - 添加到mysql数组

php - 当我搜索数据库而不是获取结果时,出现错误 500

php - http开头pdf结尾的正则表达式?

php - preg_replace() 找不到结束分隔符?

javascript - FormData 添加文件不起作用

javascript - 将类别标记到我的多个上传图像

PHP-preg_match()

javascript - 仅向搜索引擎访问者展示 Google AdSense 广告

PHP 正则表达式替换

php - Laravel 收银员它不会自动创建订阅