![](/img/trans.png)
[英]PHP Regex line-breaks won't be removed from imported Facebook description data
[英]Regex - Why doesn't this .* (dot-star) match line-breaks?
/(<pre>|<code>|\\[code])(.*)(</pre>|</code>|\\[/code])/gi
如果我有以下内容:
<code>foobar</code>
但如果我有这样的换行符:
<code>
Awesome
</code>
它不符合它,我做错了什么?
你确实需要DOTALL
modifer /s
,因为.
默认情况下,dot不包括换行符。 /g
修饰符OTOH在PHP和PCRE中不合法。
你也应该使用.*?
不太匹配。
在PCRE中,“。” 不匹配每个字符,它匹配所有不是换行符的东西:
在字符类之外,模式中的点与主题中的任何一个字符匹配,包括非打印字符,但不是(默认情况下)换行符。
( http://www.php.net/manual/en/regexp.reference.dot.php )
尝试使用[\\ s \\ S]之类的东西。
因为.
除非您输入s
开关,否则默认情况下匹配除换行符之外的每个字符。
请在此处查看正则表达式开关的说明。
尤其是
s(PCRE_DOTALL)如果设置了此修饰符,则模式中的点元字符将匹配所有字符,包括换行符 。 没有它,排除了换行符。
所以/(< /(<pre>|<code>|\\[code])(.*)(</pre>|</code>|\\[/code])/is
.*)(</ /(<pre>|<code>|\\[code])(.*)(</pre>|</code>|\\[/code])/is
。
(否g
,使用preg_match_all
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.