我在PHP中有这个正则表达式:
preg_match('/\[summary\](.+)\[\/summary\]/i', $data['text'], $match);
当摘要标记之间的文本在一行上时,它可以正常工作。但是,当它包含换行符时,它不匹配。
我试图在这里找到一个正确的修饰符:http://nl2.php.net/manual/en/reference.pcre.pattern.modifiers.php 但唯一一个与换行相关的是“m”,而这并不是我想要的。
如何使这项工作?
答案 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?。