在使用PHP从搜索查询中提取关键词时,哪种方法更快:
$keyword = preg_split('/[\s]+/', $_GET['search']);
或者$keyword = explode(' ', $_GET['search']);
在使用PHP从搜索查询中提取关键词时,哪种方法更快:
$keyword = preg_split('/[\s]+/', $_GET['search']);
或者$keyword = explode(' ', $_GET['search']);
提示:如果您不需要正则表达式的强大功能,您可以选择更快(尽管更简单)的替代方法,如explode()或str_split()。
explode()
比较快,详情请见: micro-optimization.com/explode-vs-preg_split (链接来自web.archive.org)
但是,preg_split
的优势在于支持制表符 (\t
) 和空格 (\s
)。\s
用于查找空白字符。0x20
)0x09
)0x0D
)0x0A
)0x0C
)在这种情况下,您应该看到成本和收益。
提示:使用array_filter
删除数组中的空项:
示例:
$keyword = explode(' ', $_GET['search']); //or preg_split
print_r($keyword);
$keyword = array_filter($arr, 'empty');
print_r($keyword);
注意:RegExp性能
一般规则:如果你可以不使用正则表达式完成某事,那就不要使用它们!
如果你想按空格拆分字符串,explode 的速度更快。
explode()
也适用于其他字符。 - Machavity
explode("\t",$string)
- Forienexplode()
不支持"tabs",我是说\s
与preg_split
同时支持"space"和"tab"。 :) - Guilherme Nascimento