0

PHPで文字列データ「VAL001」を「VAL」と「001」の2つの列に分割するにはどうすればよいですか。

4

5 に答える 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 よりも多くの基準が必要であることがすぐにわかります。一方が他方を除外するわけではなく、一部の文字列は数値であり、すべての数値は文字列である可能性があるためです。

preg_match()

substr()

于 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 に答える