两个字符串之间提取文本的正则表达式

3

你好,我需要获取在两个类似标签的字符串之间的内容:

[code]
some text and 
new line 
[/code]

我尝试使用这个正则表达式,但它只能在没有换行符的情况下工作:

preg_match("/\[view\](.*)\[\/view\]/",$string, $results);

我需要一个可以处理换行符和任何我放在这两个“标签”之间的字符的工具。有什么想法吗?

1个回答

9

在调用中使用s修饰符以进行多行搜索:

preg_match("/\[view\](.*)\[\/view\]/s",$string, $results);

最终,你不应该使用正则表达式来进行复杂的解析。它无法胜任这项工作。找到一个适合你目的的标记语言并使用现有的库进行解析。


谢谢!它也可以使用“s”修饰符(刚刚发现:P)谢谢。 - MatterGoal
@Asap 实际上它不适用于 m 修饰符;正确的答案就像你所说的那样,是 s 修饰符。对于我之前的错误回答感到抱歉... - lonesomeday
尝试运行它对[view]foo[view]bar[/view]baz[/view],你会得到什么? - ircmaxell
@ircmaxwell 这是一个很好的观点,我已经添加了关于使用真正的解析器的注释。 - lonesomeday

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接