0

次の文字列を使用します。

$str = '["one","two"],a,["three","four"],a,,a,["five","six"]';

preg_split( delimiter pattern, $str );

この結果を得るには、区切り文字パターンをどのように設定する必要がありますか。

$arr[0] = '["one","two"]';
$arr[1] = '["three","four"]';
$arr[2] = '["five","six"]';

言い換えれば、パターン ',a,' AND ',a,,a,' で分割する方法はありますが、',a,' は部分文字列であるため、最初に ',a,,a,' をチェックします'、a、、a、'?

前もって感謝します!

4

4 に答える 4

1

あなたが実際にやろうとしていることは、四角い括弧で囲まれた部分を分離しているように見えます。あなたはそのようにそれをすることができます:

$arr = preg_split("/(?<=\])[^[]*(?=\[)/",$str);
于 2013-03-07T22:04:19.420 に答える
1

,a,としかない場合,a,,a,は、これで十分です。

preg_split("/(,a,)+/", $str);
于 2013-03-07T22:07:27.813 に答える
0

ブラケット間のコンテンツのみが必要な場合は、preg_split ではなく preg_match を使用する必要があると思います

  1. 正規表現を使用して括弧内を抽出します
  2. php preg_split() で 2 つの単語の間のテキストを検索する
于 2013-03-07T22:03:38.593 に答える
0

このコードを見てください:

$result = array();

preg_match_all("/(\[[^\]]*\])/", '["one","two"],a,["three","four"],a,,a,["five","six"]', $result);

echo '<pre>' . print_r($result, true);

次のように返されます。

Array
(
    [0] => Array
        (
            [0] => ["one","two"]
            [1] => ["three","four"]
            [2] => ["five","six"]
        )

    [1] => Array
        (
            [0] => ["one","two"]
            [1] => ["three","four"]
            [2] => ["five","six"]
        )
)
于 2013-03-07T22:03:58.333 に答える