解构弦乐的最快方法

时间:2013-07-16 13:29:45

标签: php string

我有php字符串形式:

somename_XXX_someothername_YYY

XXX& YYY =整数

我想在数组中提取somenameXXX,以便:

array [0] => somename
array [1] => XXX

以下是我实现它的方法:

$a = array();
$x = 'stack_312_overflow_213';
$a[] = strstr($x, '_', true);
$a[] = strstr(ltrim(strstr($x, '_', false), '_'), '_', true);

我想知道是否还有其他更快的方式,因为我的应用程序将以这种方式修剪大约10,000个字符串。

P.S。:我对速度知之甚少,或者php函数最快,所以想在这里发帖。

3 个答案:

答案 0 :(得分:2)

然后更快爆炸和preg_match:

list($word, $num) = sscanf($x, '%[^_]_%d');

此外,你已经将$ num作为整数。

如果您愿意使用explode,请将其限制为3以加快速度,如果您需要,也可以在$ num上输入int时间:

explode('_', $x, 3);

答案 1 :(得分:0)

只需使用$arr = explode('_', $str);,[0]和[1]点中的值就是您请求的前两个值

答案 2 :(得分:0)

以下是从字符串中获取信息的两种方法。 哪两个更快?我真的不知道,但你可以测试一下。

这个结果来自爆炸:

$result = explode('_', 'somename_XXX_someothername_YYY', 3);

print_r($result);

使用正则表达式:

$matches = array();
preg_match('/^(.*?)_(.*?)_/', 'somename_XXX_someothername_YYY', $matches);
array_shift($matches); //will remove the first match, which is "somename_XXX_"

print_r($matches);