2011-01-21 48 views
0

我試圖做一個函數刪除所有支架代碼,但它似乎並不奏效,PHP:正則表達式去除支架代碼

function anti_code($content) 
{ 
    # find the matches and then remove them 
    $output = preg_replace("/\[a-z\s+\]/is", "", $content); 

    # return the result 
    return $output; 
} 

我想在要刪除這些代碼輸出,

Agro[space]terrorism 
Agro[en space]terrorism 

,這樣我可以得到

Agroterrorism 

我一定是壞了我的正則表達式!請告訴我。謝謝。

+0

作爲一邊,從來沒有使用雙引號的字符串,其中單引號的字符串,尤其是在正則表達式模式 – Walf 2011-01-21 13:35:19

回答

4

你逃過[],但沒有添加第二組未轉義的[]來指定一個字符類。另外,如果您在正則表達式中沒有使用.元字符,則s不是必需的。

試試這個:

/\[[a-z\s]+\]/i 

如果你不介意的方括號之間有什麼,只是想刪除包含在他們的一切,這是不行的:

/\[[^]]+\]/i 
+0

+1,你打敗了我52秒... V不錯... – ircmaxell 2011-01-21 13:16:42

+0

@ircmaxell:我試圖藐視我現在實際上正在獲得的持續連接重置錯誤,並顯示我的Wi-Fi路由器是誰的老闆。 – BoltClock 2011-01-21 13:18:42

0

嘗試\[[a-z\s]+\]它將捕捉括號和所有內容