正则表达式,匹配标签之间的换行符

时间:2009-06-17 10:35:35

标签: php regex

我在PHP中有这个正则表达式:

preg_match('/\[summary\](.+)\[\/summary\]/i', $data['text'], $match);

当摘要标记之间的文本在一行上时,它可以正常工作。但是,当它包含换行符时,它不匹配。

我试图在这里找到一个正确的修饰符:http://nl2.php.net/manual/en/reference.pcre.pattern.modifiers.php 但唯一一个与换行相关的是“m”,而这并不是我想要的。

如何使这项工作?

2 个答案:

答案 0 :(得分:2)

您链接到的手册页描述了影响换行符处理方式的其他选项。

s(PCRE_DOTALL)     如果设置了此修改器,模式中的点元字符将匹配所有字符,包括换行符。没有它,排除了换行符。此修饰符等效于Perl的/ s修饰符。诸如[^ a]之类的负类始终匹配换行符,与此修饰符的设置无关。

答案 1 :(得分:0)

正则表达式在解析HTML方面根本不好(请参阅Can you provide some examples of why it is hard to parse XML and HTML with a regex?了解原因)。你需要的是一个HTML解析器。有关使用各种解析器的示例,请参阅Can you provide an example of parsing HTML with your favorite parser?

您可能会发现使用answer有帮助的SimpleXML