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

Mar*_*rco 20 php explode preg-split

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

$keyword = preg_split('/[\s]+/', $_GET['search']);
Run Code Online (Sandbox Code Playgroud)

要么

$keyword = explode(' ', $_GET['search']);
Run Code Online (Sandbox Code Playgroud)

Mac*_*ity 22

根据PHP.net,爆炸速度更快

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


Gui*_*nto 13

简单的用法explode()是更快,请参阅:micro-optimization.com/explode-vs-preg_split (链接来自web.archive.org)

但是preg_split具有支持tabs(\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);
Run Code Online (Sandbox Code Playgroud)

注意: RegExp Perfomance

  • 没问题,但我发现这句话误导了:)最好回答这里无论如何imho (2认同)

For*_*ien 7

一般规则:如果你能做一些没有正则表达式的事情,那就不用它们吧!

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