2012-04-02 17 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 (
) 

我預計

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

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

我使用/m修改。當捕獲的字符串不包含新行時,變體就可以工作。爲什麼它不工作,因爲它是?

+0

'.'匹配一個字符類內的文字點。 – 2012-04-02 14:54:46

回答

0

嘗試:

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

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

你並不需要所有的逃逸,再加上你可以使用s修正之作。匹配換行符。

上面的輸出結果是你所期望的,它是否解決了你更廣泛的問題當然是另一回事 - 這是我最好的猜測。