0

私は次のようにテキストをフォーマットしました:

Record
name=aaa
age=16
info=blabla bla

Record
name=bbb
age=15
info=foo bar foo bar

PHPで正規表現を使用して配列に変換したいと思います。これまでに試しました:

preg_match_all("/Record.*\n(?m:^(.+)=(.+)$)+/",$text,$matches);

しかし、それは 、なぜこの場合に機能しないのか"Record name=aaa"を理解し、疑問に思うだけです。では、ここでどのようにパターンを形成する必要がありますか?"Record name=bbb"+

4

2 に答える 2

2

最初の改行の後に改行が一致していません。セクション\n内を移動する(?m:...)

于 2012-12-26T17:39:08.560 に答える
1

これでうまくいきます

$data = array_values(array_map(
    function($e){
        preg_match_all('/(.*?)=([^\r\n]*)/', $e, $m); 
        return array_combine($m[1], $m[2]);
    }, 
    array_filter(explode("Record", $text))
));

まず、explodeとarray_filterを使用して、データ全体区切り文字Recordとして分割します。次に、チャンクごとに、preg_match_allを使用してキーと値のペアを抽出し、( array_combineによって)連想配列を構築します。

于 2012-12-26T17:47:19.863 に答える