Регулярное выражение - почему есть разница?

cyborg

Новичок
Регулярное выражение - почему есть разница?

Почему так?

так ничего не находит

PHP:
$xml = '<xml>
<action type="ready"/>
</xml>';

preg_match_all("|(<xml.*</xml>)|Um", $xml, $arr);
а если написать текст в одну строку то находит

PHP:
$xml = '<xml><action type="ready"/></xml>';

preg_match_all("|(<xml.*</xml>)|Um", $xml, $arr);
?

-~{}~ 17.11.09 14:39:

пробела в шаблоне нет

"|(<xml.*</xml>)|Um"
 

StiM

Новичок
Боюсь сказать глупость, но по-моему дело в переносе строки.

$xml = '<xml>'
.'<action type="ready"/>'
.'</xml>';

preg_match_all("|(<xml.*</xml> )|Um", $xml, $arr);
 

cyborg

Новичок
Ну я понимаю, что дело в нем, но почему? :/
Почему все переносы не попадают под шаблон ".*"?

Хотя прочитал щас про точку

match any character except newline (by default)

я думал она все заменяет

-~{}~ 17.11.09 14:51:

Почему не помогает модификатор m? (PCRE_MULTILINE)
 

cyborg

Новичок
tardis тока для символов $ и ^ ?

а как тогда проигнорировать в тексте новую строку?
 

cyborg

Новичок
triumvirat да нет, мне сначала надо из текста вытащить просто все xml-ины, а потом уже каждую парсить.

просто никогда не сталкивался с многострочным текстом
точнее сталкивался, но я обычно удалял все переносы строк, а тут задался вопросом
 
Сверху