这可能听起来像一个愚蠢的问题,但是:当使用它来提取php中的搜索查询中的关键字时,这会更快:
$keyword = preg_split('/[\s]+/', $_GET['search']);
要么
$keyword = explode(' ', $_GET['search']);
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);
一般规则:如果你能做一些没有正则表达式的事情,那就不用它们吧!
如果你想用空格分割字符串,爆炸会更快。