1

PHP でタイトル シーケンスに続く n 個の単語を含む行をキャプチャしようとしていますが、最初の単語以外はキャプチャできません。一致させようとしているファイルの内容は次のとおりです。

Name: test
Caption: test test test test

そして、これが正規表現コードと結果です...

preg_match_all('/([A-z]+:)\s*(\w+)[\r|\r\n|\n]*/', $contents, $array);

結果:

array(3) { 
    [0]=> array(2) { 
        [0]=> string(11) "Name: test " 
        [1]=> string(14) "Caption: test " 
    } 

    [1]=> array(2) { 
        [0]=> string(5) "Name:" 
        [1]=> string(8) "Caption:" 
    } 

    [2]=> array(2) { 
       [0]=> string(4) "test" 
       [1]=> string(4) "test" 
    } 
  }

どんな助けでも大歓迎です。

4

1 に答える 1

0

入力データが常に例のように見えると仮定すると (タイトル セグメント、コロン、単語、すべてが 1 行にある)、次のようになります。

preg_match_all('/([A-Za-z]+:)\s*(.*)/', $contents, $array);

これにより、 の$array[1]ようなものが一致しName:、その後$array[2]、行の残りの部分と一致します ( を使用trim()して、先頭および/または末尾の空白を削除する必要がある場合があります$array[2])。

2番目の部分で「単語」のみをキャプチャしたい場合は、2番目のキャプチャグループを次のように変更できると思います:

preg_match_all('/([A-Za-z]+:)\s*([\w\s]+)/', $contents, $array);

[A-z]また、ASCII テーブルには大文字と小文字の間にアルファベット以外の文字があるため、この構造を使用しないでください。文字マップについては、 ASCII テーブルを参照してください。

于 2012-08-27T17:22:12.303 に答える