在维护搜索逻辑的同时,更快地替换preg_match

时间:2015-11-10 09:52:51

标签: php regex preg-match

我在创建搜索功能的速度方面遇到了一些问题。

我的搜索使用preg_match将关键字与文本分开。它可以搜索“实习生”而不是“互联网”或“国际”。

但它的运行速度非常慢,无论如何你可以加快速度吗?

 foreach ($keywords as $Word)
 {
   if (preg_match("/\S*\b($Word)[s]?\b\S*/i", $Text))
   {
     return $Word;
   }
 }

谢谢:)

1 个答案:

答案 0 :(得分:0)

通过删除第一个OCLCheckErr(),表达式已经足够快了。第二个在您的\S*中也是多余的。

你还需要在双引号PHP正则表达式中双重转义特殊的正则表达式元字符。

使用

preg_match

请参阅this IDEONE demo

请注意,如果$ keywords数组中包含特殊字符(如foreach ($keywords as $Word) { if (preg_match("/\\b(" . preg_quote($Word) . ")s?\\b/i", $Text)) { return $Word; } } [),则需要使用(正则表达式。