我有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);
我想知道是否还有其他更快的方式,因为我的应用程序将以这种方式修剪大约10,000个字符串。
P.S。:我对速度知之甚少,或者php
函数最快,所以想在这里发帖。
答案 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);