2012-04-02 1 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

Символ '.' соответствует буквальной точке внутри класса символов. –

ответ

0

Try:

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

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

Вам не нужно все, что вытекание плюс вы можете использовать модификатор ы сделать. соответствие новой строки.

Вышеупомянутые выходы того, что вы ожидали, независимо от того, решает ли ваша более широкая проблема, - это, конечно, другое дело - это мое лучшее предположение о том, что вы пытались сделать.

 Смежные вопросы

  • Нет связанных вопросов^_^