爆炸并获取引号内的内容

时间:2013-03-08 02:06:58

标签: php arrays explode

我正在使用一种方法在表格行中列出一堆用户/信息:

"3""2""5""pg1"

说这是我得到的数据,我该如何制作,所以我只检索引号内的数据(作为数组)。我这样做是因为从长远来看,它有助于编程。

4 个答案:

答案 0 :(得分:4)

如果值中没有引号,则可以使用explode()

$string = '"3""2""5""pg1"';
$array = explode( '""', trim( $string, '"'));

will output

Array
(
    [0] => 3
    [1] => 2
    [2] => 5
    [3] => pg1
)

答案 1 :(得分:2)

您可以使用preg_split将其分开:

preg_split("/\"+/", STRING, -1, PREG_SPLIT_NO_EMPTY);

答案 2 :(得分:1)

这还没有完全回答,因为我还有一些探索......

  

TRIM并不像ltrim和rtrim那么快?看看例子......

<?php

// FASTEST: 0.13544297218323 ms     
$a1 = microtime(true);
for ($i=0; $i<=100000; $i++) {
$string = '"3""2""5""pg1"';
$array = explode( '""', trim( $string, '"'));
}
$a1e = microtime(true);
$a1r = $a1e-$a1;


// MIDDLE FAST: 0.2419900894165 ms
$a2 = microtime(true);
for ($i=0; $i<=100000; $i++) {
$string = '"3""2""5""pg1"';
$string = rtrim(ltrim(str_replace('""', ',', $string), '"'), '"');
$pieces = explode(',', $string);
}
$a2e = microtime(true);
$a2r = $a2e-$a2;

// MIDDLE 0.20940399169922 ms!
$a3 = microtime(true);
for ($i=0; $i<=100000; $i++) {
$re = preg_split("/\"+/", $string, -1, PREG_SPLIT_NO_EMPTY);
    $pieces = explode(',', $re[0]);
}
$a3e = microtime(true);
$a3r = $a3e-$a3;

echo $a1r."\r\n"; 
echo $a2r."\r\n"; 
echo $a3r."\r\n";

?>

答案 3 :(得分:0)

可能不是最优雅的方式:

<?php

$string = '"3""2""5""pg1"';

$string = rtrim(ltrim(str_replace('""', ',', $string), '"'), '"');

$pieces = explode(',', $string);

print_r($pieces);

<强>结果

Array
(
    [0] => 3
    [1] => 2
    [2] => 5
    [3] => pg1
)

See the demo