Php 解构字符串的最快方法

Php 解构字符串的最快方法,php,string,Php,String,我有一个php字符串,格式如下: somename_XXX_someothername_YYY XXX&YYY=整数 我想提取数组中的somename和XXX,这样: array [0] => somename array [1] => XXX 以下是我实现这一目标的方法: $a = array(); $x = 'stack_312_overflow_213'; $a[] = strstr($x, '_', true); $a[] = strstr(ltrim(strstr($x

我有一个
php
字符串,格式如下:

somename_XXX_someothername_YYY
XXX
&
YYY
=整数

我想提取数组中的
somename
XXX
,这样:

array [0] => somename
array [1] => XXX
以下是我实现这一目标的方法:

$a = array();
$x = 'stack_312_overflow_213';
$a[] = strstr($x, '_', true);
$a[] = strstr(ltrim(strstr($x, '_', false), '_'), '_', true);
我想知道是否还有其他更快的方法,因为我的应用程序将以这种方式修剪大约10000多个字符串


注:我对速度不太了解,也不知道哪些
php
函数最快,所以我想把它贴在这里。

只需使用
$arr=explode(''.',$str)
和[0]和[1]点中的值是您请求的前两个值,比分解和预匹配更快:

list($word, $num) = sscanf($x, '%[^_]_%d');
另外,您已经将$num作为整数了

如果您愿意使用explode,请将其限制为3以加快速度,如果需要,您还将失去在$num上施放int的时间:

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

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

此结果来自爆炸:

$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);

$arr=explode(“”,$string)那么[0]和[1]有你的值吗?本机函数怎么了?@middaparka:是的,我是个白痴。trim不是这个意思。修剪是从字符串的末端移除字符,通常是空白。@ ptokya,请考虑删除你的问题。我很确定正则表达式会比较慢。然而,这并不是基于任何事实。regexp为+1。千万不要在几十毫秒的时间里浪费时间。首先编写易于理解和维护的代码,进行优化,然后再进行微优化。我正在运行一个简短的测试(如果我的php服务器没有崩溃-"-"),爆炸应该受到限制,预匹配太慢。