2013-06-19 57 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