awm*_*awm 3 php regex preg-replace
我试图找到一个匹配以下的正则表达式:
<style type="text/css"> .article-content{ position: relative;
padding-bottom: 140px;} .pane.pane-newsletter-contextual{ display: block;
bottom: 32px; position: absolute; left: 0px; margin-left: 0px; } </style>
Run Code Online (Sandbox Code Playgroud)
我需要正则表达式才能将它传递给preg_replace并从字符串中删除它.我有正则表达式的基本知识,并在审查了http://www.regular-expressions.info/examples.html上的基础后尝试了这一点.
preg_replace("/<style\b[^>]*>(.*?)</style>/", "", $body);
Run Code Online (Sandbox Code Playgroud)
但是这一行给出了以下错误 Unknown modifier 't' in ...
此外,我在提出问题之前尝试搜索,但找不到任何类似的问题.
你忘了逃避斜线......
preg_replace("/<style\\b[^>]*>(.*?)<\\/style>/s", "", $body);
Run Code Online (Sandbox Code Playgroud)
有关修饰符的更多信息这里.
至于为什么我们需要2个反斜杠,因为我们需要在字符串中使用反斜杠字符来逃避斜杠.不幸的是,在PHP中,我们需要一个双反斜杠\\来表示所有单引号或双引号字符串中的单个反斜杠字符.这不是必须的,但是当事情变得复杂时,它会让事情变得更加清晰.
或者,您可以选择其他字符作为标识符.例如,
preg_replace("|<style\b[^>]*>(.*?)</style>|s", "", $body);
Run Code Online (Sandbox Code Playgroud)
这样,您可以避免转义斜杠.
编辑:添加修饰符使替换"工作".
EDIT2:添加了模式字符串中双反斜杠的说明.
编辑3:添加了替代方案.