使用“NO_EMPTY”选项进行爆炸,有助于获得更快的功能

时间:2012-03-31 00:23:39

标签: php

基本上我有这个字符串

$str="word1    word2   word3";

我需要

array(
  'word1',
  'word2',
  'word3'
);

我做了这个功能:

function explodeStrict($delimiter,$string) {
    return preg_split("/{$delimiter}/",$string,null,PREG_SPLIT_NO_EMPTY);
}

但我需要快速。并且此函数比简单的explode();(在1mil循环内)慢2倍  我尝试过解析每个字符的香草风格,但它比explode();

慢7倍

你能想象一个像爆炸那样忽略空元素的函数吗?

凭借我的功能,1milion循环需要3.9秒。 爆炸需要2秒

由于

3 个答案:

答案 0 :(得分:2)

假设:

$str="word1    word2   word3";

尝试:

return array_filter(explode(" ",$str));

答案 1 :(得分:1)

function explodeStrict($delimiter,$string) {
    return preg_split("/" . preg_quote($delimiter, "/") . "+/", $string);
}

答案 2 :(得分:1)

$str = 'word1    word2   word3';
$str = strtok($str, ' ');

$x = array();
while ($str !== false)
{
  $x[] = $str;
  $str = strtok(' ');
}