【发布时间】:2018-02-09 17:17:40
【问题描述】:
我有以下文本,但希望从字符串中删除引号位,我正在使用以下正则表达式,但它给了我以下错误。
文本示例 1
<p>[quote]</p>
<p>[quote]</p>
<p>inner quote text</p>
<p>[/quote]</p>
<p>outer quote text</p>
<p>[/quote]</p>
<p>This is a test.</p>
文本示例 2
<p>[quote][quote]</p>
<p>inner quote text</p>
<p>[/quote]</p>
<p>outer quote text</p>
<p>[/quote]</p>
<p>This is a test.</p>
预期文本
<p>This is a test.</p>
正则表达式
preg_replace('/<p>\[quote\][\s\S]+?<p>\[\/quote\]<\/p>/', '', $string);
错误
Warning: preg_replace(): Compilation failed: missing terminating ] for character class at offset
我查看了Deleting text between two strings in php using preg_replace,它有所帮助,但我无法弄清楚,非常感谢任何帮助。
【问题讨论】:
-
结果文本应该是什么?
-
1.) 错误表明您没有在 ...
[中转义 ...\<p\>[...2.) 您的示例文本包含[quote而不是[quote]。进一步没有必要逃避<,> -
@mrzasa,抱歉,现在更新了问题。
-
这个工具将帮助你测试你的正则表达式(有很好的解释):regex101.com