2012-04-02 7 views
1

PHP:このマルチラインPCREキャプチャで何が問題になっていますか?

$x = preg_match (
    '/^([.\\n\\r]*)\\n\\n/m', 
    "a\nb\nc\n\nd\ne\nf", 
    $m); 

print "x=$x, m="; 
print_r ($m); 

これは

x=0, m=Array (
) 

を出力私は/m修飾子を使用しています

x=1, m=Array (
     [0] => a 
    b 
    c 

    d 
    e 
    f 
     [1] => a 
    b 
    c 
) 

を期待しました。キャプチャされた文字列に改行が含まれていない場合、これはバリエーションがあります。それはなぜそれが動作しないのですか?

+0

'.'は、文字クラス内のリテラルドットと一致します。 –

答えて

0

試してみてください。

$x = preg_match (
    '/^(.*)\n\n.*/sm', 
    "a\nb\nc\n\nd\ne\nf", 
    $m); 

print "x=$x, m="; 
print_r ($m); 

あなたはすべてのことエスケープを必要としない、プラスあなたが作るためにS修飾子を使用することができます。改行を合わせる。

上記の内容は、あなたの幅広い問題を解決するかどうかにかかわらず、あなたが何をしようとしていたのか、私にとっては最高の推測です。

関連する問題