Preg replace 使用php删除空BBcode url标记

Preg replace 使用php删除空BBcode url标记,preg-replace,Preg Replace,我在删除空[url]时遇到一些问题=http://exp.com]字符串中的[/url]标记。 这是我所拥有的,但它是不正确的,因为如果这两个标签之间有什么东西,它也会删除bcz $desc = preg_replace("#\[url=.*?\][(\W)]?\[/url\]#i", "", $desc); 尝试以下模式: $desc = preg_replace('~\[url=[^]]*]\s*+\[/url]~i', '', $desc); 其思想是避免使用不包含右方括号的字符类(即

我在删除空[url]时遇到一些问题=http://exp.com]字符串中的[/url]标记。 这是我所拥有的,但它是不正确的,因为如果这两个标签之间有什么东西,它也会删除bcz

$desc = preg_replace("#\[url=.*?\][(\W)]?\[/url\]#i", "", $desc);
尝试以下模式:

$desc = preg_replace('~\[url=[^]]*]\s*+\[/url]~i', '', $desc);
其思想是避免使用不包含右方括号的字符类(即:
[^]]
)来使用惰性量词

\s*+
只允许在开始标记和结束标记之间使用白色字符,但如果不需要,可以将其删除

请注意,结束方括号不需要在字符类外部转义,必须在字符类内部转义,除非它是第一个字符。您可以编写
[^]a]
[^a\]
[^\]a]
但不能将
[^a]
解释为除
a
后接
]
以外的所有字符

我对你所做的感到惊讶,因为
[url=www.example.com][/url]
代表
[url=www.example.com]www.example.com][url]