繁体   English   中英

PHP正则表达式多行搜索问题

[英]Php regex multiline search issue

我试图让所有字符之间的样式标签。 这是我的正则表达式

 '#<style>(.*?)</style>'

它可以正确产生结果,但不适用于多行

为此可以正常工作:

<style>body { height: '100%'; }</style>

这不起作用

<style> 
body { 
  height: '100%'; 
}

</style>

我知道/ s或[/ s / S]或s可以工作,但我不知道它们如何工作

问候

您可以使用模式修饰符与PCRE regex在多行上进行匹配: http : //php.net/manual/zh/reference.pcre.pattern.modifiers.php

m是多行修饰符。 s是允许点也匹配新行的修饰符。 那么像这样的模式怎么样:

'#<style>(.*?)</style>#ms'

我认为您也可能会对i修饰符感兴趣,因为标记可以用<style><STYLE>或其他口味<StYlE>都有效。

用这个:

 <style>([\s\S]*)<\/style>

演示

“。” 匹配\\ n以外的任何单个字符,因此'<style>(.*?)</style>'在多行情况下不起作用。 而[\\ s \\ S] *将匹配任何字符,包括\\ n。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM