3

いくつかの文字列配列をキャプチャする必要があります..試してみましたが、できません:$

私は私のコードでこれを持っています:

<?php
$feed = "[['2013/04/03',8.300],['2013/04/04',8.320],['2013/04/05',8.400]]";
preg_match_all("/\[(.*?)\]/",$feed,$matches);
print_r($matches);

そして戻ってきます:

Array
(
    [0] => Array
        (
            [0] => [['2013/04/03',8.300]
            [1] => ['2013/04/04',8.320]
            [2] => ['2013/04/05',8.400]
        )

    [1] => Array
        (
            [0] => ['2013/04/03',8.300
            [1] => '2013/04/04',8.320
            [2] => '2013/04/05',8.400
        )

)

preg_match_all または preg_split を使用して作成するにはどうすればよいですか? または $matches[1][1] または $matches[1][2] のような要素の 1 つの配列を返すために必要なメソッドは??

つまり、各要素の形式は次のようになります。

'2013/04/05',8.400

明確になることを願っています:)

よろしくお願いします!

4

3 に答える 3

1

このテキストはかなり正規化された形式、ala JSON のようです。reg マッチングを回避し、これをjson_decodeで解析することは完全に可能ですが、いくつかの小さな変換を行う必要があります。

// original input
$text = "[['2013/04/03',8.300],['2013/04/04',8.320],['2013/04/05',8.400]]";

// standard transformation to correct ' and / characters
$text = str_replace( array('/', "'"), array('\/', '"'), $text );

// let native PHP take care of understanding the data
$data = json_decode( $text );

これにより、日付と値を含む配列の配列が得られます。print_r( $data );与えます:

Array (
    [0] => Array (
        [0] => 2013/04/03
        [1] => 8.3
    )
    [1] => Array (
        [0] => 2013/04/04
        [1] => 8.32
    )
    [2] => Array (
        [0] => 2013/04/05
        [1] => 8.4
    )
)

/変換はto\/'toを置き換えて"、文字列を JSON 準拠にします。またはその趣旨の何か。

于 2013-05-01T12:59:16.457 に答える
0

これを試すことができます:

<?php
$feed = "[['2013/04/03',8.300],['2013/04/04',8.320],['2013/04/05',8.400]]";
preg_match_all('~\[\K[^[\]]++~', $feed, $matches);
print_r($matches);
于 2013-05-01T12:41:50.400 に答える