2010-09-09 96 views
1

我正在使用非常長的查詢來檢測我的用戶用戶名中令人討厭的詞。查找在哪裏以及哪個詞匹配sql LIKE語句

我已經做了一個版主頁面,主持人可以點擊檢測到的用戶名旁邊的按鈕,它將用*替換違規詞。問題是我怎樣才能輕鬆發現哪個冒犯性詞語以及替換的地方?

我想我需要使用一些與LIKE語句完全相同的描述的正則表達式。幫助創建這樣一個正則表達式將被極大地佔用,或者......如果有人有更好的解決方案。

TIA

回答

2

喜歡的東西:

$bad_list = array('foo','barr','ax'); // list of bad words you want to * 

$from = array(); 
$to = array(); 

foreach($bad_list as $s){ 
    $from[] = '/'.preg_quote($s,'/').'/'; // PHP expects regex in delimiter. 
    $to[] = str_repeat('*',strlen($s)); 
} 
$str = "afoob"; 
$str = preg_replace($from,$to,$str); // $str is now a***b 

您也可以使用str_replace,也真的在這裏沒有必要正則表達式。

+0

Clbuttic例子。 – Wrikken 2010-09-09 15:34:03