如何在 PHP 中将字符串数据“VAL001”拆分为“VAL”和“001”两列。
问问题
119 次
5 回答
0
上述解决方案的基准测试为 100000 次迭代。
Intel(R) Core(TM) i5-2435M CPU @ 2.40GHz
<?php
function getParts($str){
$pieces = preg_split("/[A-Z]+/", $str);
$number = $pieces[1];
$pieces = preg_split("/[0-9]+/", $str);
$string = $pieces[0];
return array('number' => $number, 'string' => $string);
}
$string = 'VAL001';
$start = microtime(true);
for($cou=0;$cou<100000;$cou++){
$ret = getParts($string);
}
$end = microtime(true);
echo 'time taken : ' . sprintf('%f', $end - $start);
echo "\n";
$start = microtime(true);
for($cou=0;$cou<100000;$cou++){
list($val, $num) = str_split($string, 3);
}
$end = microtime(true);
echo 'time taken : ' . sprintf('%f', $end - $start);
echo "\n";
$start = microtime(true);
for($cou=0;$cou<100000;$cou++){
$val1 = substr( $var, 0,3);
$val2 = substr( $var, 3,3);
}
echo 'time taken : ' . sprintf('%f', $end - $start);
echo "\n";
?>
输出
第一次运行
time taken : 2.269323
time taken : 0.586926
time taken : -0.000081
第二轮
time taken : 2.205317
time taken : 0.555085
time taken : -0.000073
于 2012-09-27T03:48:42.853 回答
0
$var = 'VAL001';
$val1 = substr( $var, 0,3);
$val2 = substr( $var, 3,3);
echo $val1." ".$val2;
于 2012-09-27T02:18:59.607 回答
0
这里有几个选项,但您很快就会注意到,我们需要比 Numeric 和 String 更多的条件,因为一个不排除另一个,一些字符串是数字,所有数字都可以是字符串。
于 2012-09-27T02:19:19.647 回答
0
<?php
function getParts($str){
$pieces = preg_split("/[A-Z]+/", $str);
$number = $pieces[1];
$pieces = preg_split("/[0-9]+/", $str);
$string = $pieces[0];
return array('number' => $number, 'string' => $string);
}
$str1 = 'VAL001';
$str2 = 'NEWVAL0001';
$ret1 = getParts($str1);
var_dump($ret1);
$ret2 = getParts($str2);
var_dump($ret2);
?>
输出
array(2) {
["number"]=>
string(3) "001"
["string"]=>
string(3) "VAL"
}
array(2) {
["number"]=>
string(4) "0001"
["string"]=>
string(6) "NEWVAL"
}
于 2012-09-27T02:19:21.963 回答
0
很大程度上取决于你需要什么。我会给你一个还没有人知道的答案:str_split
list($val, $num) = str_split($string, 3);
于 2012-09-27T02:20:52.320 回答