[英]PHP Regexp Optimize An Existing Pattern
我正在使用此代码
preg_match_all("/([^#]+\btbds\b.+?)#/iu", $data, $matches);
找到所有名为 tbds 的单词,但执行模式搜索需要大约 1.20 秒。 如果我只使用 tbds\\b 而不是 \\btbds\\b 只需要 0.19 秒(少 6 倍)。
preg_match_all("/([^#]+tbds\b.+?)#/iu", $data, $matches);
有什么方法可以优化单词匹配 \\btbds\\b 大约需要 0.19 秒吗? 我需要处理大量数据。
这是测试代码:
function generateRandomString($length = 10) {
$characters = ' 0123 456 789 abcd efgh ijkl mn opqrstu vwx yzAB CDE FGHI JKL MNOP QRS TUVWX YZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
$randomString = preg_replace('/\s+/', ' ', $randomString);
return trim($randomString,' ');
}
$data=NULL;
for ($a = 1; $a < 1000000; $a++)
$data.=" ".generateRandomString(100)." #";
$t = microtime(true);
preg_match_all("/([^#]+\btbds\b.+?)#/iu", $data, $matches);
echo microtime(true) - $t; echo "\n";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.