0

我有一个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 多个字符串。

PS:我不太了解速度,或者哪些php功能最快,所以想在这里发布。

4

3 回答 3

2

更快然后爆炸和preg_match:

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

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

如果您愿意使用爆炸,请将其限制为 3 以加快速度,如果您需要,您也将失去在 $num 上投射 int 的时间:

explode('_', $x, 3);
于 2013-07-16T13:39:40.207 回答
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);
于 2013-07-16T13:42:27.183 回答
0

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

于 2013-07-16T13:32:14.853 回答