文本包含一些带随机数的引号。
请参阅:
$string = '[quote="Member123":hk1f9ynv]This is the quote Text and we want remove it.[/quote:hk1f9ynv]
Here is the anwser to the quote.
[quote:hk1f9ynv]Here is another quote, we want remove it too.[/quote:hk1f9ynv]
Thank you very much. Good job!';
编号:hk1f9ynv存储在数据库中并且是随机的。
输出应如下所示:
以下是报价的答案。非常感谢你。干得好!
我在堆栈上尝试了很多解决方案。似乎没什么用。例如:
preg_replace('/\[[^>]*\]/', '', $string);
preg_replace('\[/?abc.*?\]', '', $string);
非常感谢。
答案 0 :(得分:1)
preg_replace的两种可能方法:
第一个忽略引用标记的id:
~\[quote\b [^]]* ]
[^[]*+
(?: (?:\[ (?!/?quote\b) | (?R) ) [^[]* )*+
\[/quote\b [^]]* ]~x
第二个捕获id并使用它来查找结束标记:
~\[quote\b [^]:]* : (?<id>[^:]*) ]
.*? # or: [^[]*+ (?:\[(?!\[/quote\b [^]:]* : \g{id} ])[^[]*)*+
\[/quote\b [^]:]* : \g{id} ]~xs
这两种模式旨在处理嵌套标记。
答案 1 :(得分:0)
为什么不使用$ string.substr(0,$ string.indexOf(“]”)来获取开始标记。)