2013-06-19 56 views
0

我从删除字符串中的空[url = http://exp.com] [/ url]标记时遇到了一些麻烦。 这是我的,但它是不正确的bcz它也删除,如果这两个标签之间有东西。用php删除空的BBcode url标记

$desc = preg_replace("#\[url=.*?\][(\W)]?\[/url\]#i", "", $desc); 

回答

1

尝试使用此模式:

$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]

+0

工作!竖起大拇指! – Edison