1

私は次のような文字列を持っています:

$string = '"lorem ipsum","dolor, sit","amet"';

「..」内の各要素をそれ自体で文字列として取得し、元の文字列を配列にレンダリングするために、EXPLODEとpreg_matchを使用しようとしています。

それは最終的に私に与えるでしょう。

$array[0] = 'lorem ipsum';
$array[1] = 'dolor, sit';
$array[2] = 'amet';

一部の文字列の間にコンマが含まれているため、展開して文字列を分離し、preg_matchingを置き換えて「..」の間に抽出しようとすると失敗します。

どうすれば目的の目標を達成できますか?

ありがとうございました。

4

3 に答える 3

1

このコードは、文字列をそのコンポーネントに繰り返し解析する必要があります。

$array = array();
while (preg_match('/^"([^"]*)"(?:,(.*)|$)/', $string, $match)) {
    $array[] = $match[1];
    $string = @$match[2];
}
于 2012-05-23T21:29:03.240 に答える
1

関数の組み合わせを、このために特別に作成された関数に置き換える必要がありますstr_getcsv::

$array = str_getcsv($string, ',', '"');

(わかりやすくするためにオプションが追加されました)

于 2012-05-23T21:33:40.663 に答える
0

あなたが探しているのはpreg_split

$string = preg_split("/,[^\s+]/", '"lorem ipsum","dolor, sit","amet"');
print_r($string);

>>

Array
(
    [0] => "lorem ipsum"
    [1] => dolor, sit"
    [2] => amet"
)
于 2012-05-23T21:33:37.180 に答える