$regpattern4 = "!<media:description type='plain'> (.*) <\/media:description>!";
我正在解析XML文档。如果描述中没有换行符,上面的正则表达式可以工作,但是即使有换行符,如何让它工作呢?
答案 0 :(得分:4)
手册页“Pattern Modifiers”可能会让您感兴趣,尤其是 s (PCRE_DOTALL
)修饰符:
如果设置了此修改器,一个点 模式中的元字符匹配 所有字符,包括换行符。 没有它,排除了换行符。 这个修饰符相当于Perl / s修饰符。一个负面的类,如 [^ a]始终匹配换行符 字符,与设置无关 这个修饰语。
你的正则表达式会变成这样:
$regpattern4 = "!<media:description type='plain'> (.*) <\/media:description>!s";
注意我在结束分隔符后添加了“s
”修饰符。
答案 1 :(得分:1)
为什么使用正则表达式来解析xml?为什么不使用simplexml_load_string来加载XML文档并“遍历”它。除非您希望进行简单的替换,否则它将比复杂的正则表达式语句更不容易出错。
答案 2 :(得分:0)
尝试
preg_match("/pattern/s", $text)
答案 3 :(得分:0)
您需要添加s
(DOTALL) modifier:
$regpattern4 = "!(.*)<\/media:description>!s";