1

テーブル行内に一連のユーザー/情報をリストする方法を使用しています:

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

これが私が取得したデータであるとしましょう。引用符内のデータのみを (配列として) 取得するようにするにはどうすればよいでしょうか。長期的にはプログラミングに役立つので、私はこのようにしています。

4

4 に答える 4

4

explode()値の中に引用符を入れることができない場合は、次のように使用できます。

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

これは出力します

Array
(
    [0] => 3
    [1] => 2
    [2] => 5
    [3] => pg1
)
于 2013-03-08T02:08:25.237 に答える
2

preg_splitを使用して、次のように分解できます。

preg_split("/\"+/", STRING, -1, PREG_SPLIT_NO_EMPTY);
于 2013-03-08T02:09:35.420 に答える
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";

?>
于 2013-03-08T02:21:36.140 に答える
0

おそらくそれを行うための最もエレガントな方法ではありません:

<?php

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

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

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

print_r($pieces);

結果

配列
((
    [0] => 3
    [1] => 2
    [2] => 5
    [3] => pg1
)。

デモを見る

于 2013-03-08T02:10:25.367 に答える