min*_*gos 1 php regex preg-replace
我正在尝试编写一个正则表达式,删除占位符文本周围的HTML标记,以便:
<p>
Blah</p>
<p>
{{{body}}}</p>
<p>
Blah</p>
Run Code Online (Sandbox Code Playgroud)
变成这样:
<p>
Blah</p>
{{{body}}}
<p>
Blah</p>
Run Code Online (Sandbox Code Playgroud)
我现在的正则表达式是/<.+>.*\{\{\{body\}\}\}<\/.+>/msU.但是,它还会删除占位符前面的标记内容,从而导致:
{{{body}}}
<p>
Blah</p>
Run Code Online (Sandbox Code Playgroud)
我不能假设用户总是将占位符放在里面<p>,所以我希望它能够在占位符周围立即删除任何一对标签.我很感激帮助纠正我的正则表达式.
[编辑]
我认为重要的是要注意CKEditor可能会也可能不会处理输入.它为开始标记添加了换行符和制表符,因此正则表达式需要使用/sm(dotall + multiline)修饰符.
试试这个:
<[^>]+>\s*\{{3}body\}{3}\s*<\/[^>]+>
Run Code Online (Sandbox Code Playgroud)
在此处查看:http://regexr.com?30s4o
这是细分:
<[^>]+> 匹配一个开头的HTML标记,只有那个.\s*捕获任何空白(相当于[ \t\r\n]*)\{{3}{恰好匹配3次body 字面上匹配字符串\}{3}}恰好匹配3次\s* 再次,抓住任何空白<\/[^>]+> 匹配关闭的HTML标记| 归档时间: |
|
| 查看次数: |
4238 次 |
| 最近记录: |