在PHP中,哪个更快:preg_split还是爆炸?

时间:2014-12-04 20:17:45

标签: php explode preg-split

这可能听起来像一个愚蠢的问题,但是:使用它来提取php中的搜索查询中的关键字时速度更快:

$keyword = preg_split('/[\s]+/', $_GET['search']);

$keyword = explode(' ', $_GET['search']);

3 个答案:

答案 0 :(得分:20)

Explode is faster, per PHP.net

  

提示如果您不需要正则表达式的强大功能,您可以选择更快(尽管更简单)的替代方案,如explode()或str_split()。

答案 1 :(得分:11)

简单的用法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):

  • 空格字符(32 = 0x20
  • 制表符(9 = 0x09
  • 回车符(13 = 0x0D
  • 换行符(10 = 0x0A
  • 换页符(12 = 0x0C

在这种情况下,您应该看到成本和收益。

提示,使用array_filter进行"删除"数组中的空项:

示例:

$keyword = explode(' ', $_GET['search']); //or preg_split
print_r($keyword);

$keyword = array_filter($arr, 'empty');
print_r($keyword);

注意: RegExp Perfomance

答案 2 :(得分:7)

一般规则:如果你可以在没有正则表达式的情况下做某事,那就不用它们来做吧!

如果你想用空格分割字符串,爆炸会更快。