PHPで文字列データ「VAL001」を「VAL」と「001」の2つの列に分割するにはどうすればよいですか。
質問する
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
2回目の実行
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 に答える