【发布时间】:2014-12-04 20:17:44
【问题描述】:
这听起来像是一个愚蠢的问题,但是:使用它在 php 中提取搜索查询中的关键字时更快:
$keyword = preg_split('/[\s]+/', $_GET['search']);
或
$keyword = explode(' ', $_GET['search']);
【问题讨论】:
标签: php explode preg-split
这听起来像是一个愚蠢的问题,但是:使用它在 php 中提取搜索查询中的关键字时更快:
$keyword = preg_split('/[\s]+/', $_GET['search']);
或
$keyword = explode(' ', $_GET['search']);
【问题讨论】:
标签: php explode preg-split
Explode is faster, per PHP.net
提示如果您不需要正则表达式的强大功能,您可以选择更快(尽管更简单)的替代方法,例如 explode() 或 str_split()。
【讨论】:
在一个简单的用法中,explode() 比更快,请参阅:micro-optimization.com/explode-vs-preg_split (link from web.archive.org)
但preg_split的优势在于支持制表符(\t)和\s的空格。
\s 元字符用于查找空白字符。
空白字符可以是 (http://php.net/manual/en/regexp.reference.escape.php):
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);
【讨论】:
explode("\t",$string)
explode() 不支持“制表符”,我说\s 和preg_split 同时支持“空格”和“制表符”。 :)
一般规则:如果您可以在没有正则表达式的情况下做某事,请在没有正则表达式的情况下做!
如果你想用空格分割字符串,explode 会更快。
【讨论】:
explode() 也适用于其他角色