//如果任何列表檔案不存在直接返回false,否則把兩個檔案列表讀取到兩個陣列裡
if (!file_exists($common_file) || !file_exists($signify_file))
$common_list = file($common_file);
$signify_list = file($signify_file);
//精確匹配
if ($match_type == 1)
//模糊匹配
if ($match_type == 2)
//判斷檢索結果陣列中是否有資料,如果有,證明是非法的
if (is_array($is_lawless) && !empty($is_lawless))
else
}//---------------------
// 精確匹配,為過濾服務
//---------------------
function exact_match($string, $common_list)
}//判斷有沒有過濾內容在陣列裡
if (!empty($blist))
return false;
}//----------------------
// 模糊匹配,為過濾服務
//----------------------
function blur_match($string, $common_list, $signify_list)
}//檢索嚴重過濾關鍵字列表
foreach($signify_list as $block)
}//判斷有沒有過濾內容在陣列裡
if (!empty($blist))
return false;
}//--------------------------
// 替換html尾標籤,為過濾服務
//--------------------------
function lib_replace_end_tag($string)
wirte by heiyeluren 2006-01-23
專案是乙個社群,需要做關鍵字過濾,主要就是過濾一些非法關鍵字,有關鍵字列表,每行一條,兩千條左右,現在在使用者提交文章的時候,對內容進行過濾,判斷是否包含這些字元。
個人思路如下:
[ 精確匹配 ]
1. 把字串進行去除空白,防止asc中1-20的控制字元出現
2. 把檔案讀出來成為陣列,使用排序函式進行排序,編碼是utf-8或gbk
3. 使用二分法對陣列進行遍歷,以最快的速度找到是否存在非法字元
[ 模糊匹配 ]
1. 把字串進行去除空白,防止asc中1-20的控制字元出現
2. 把檔案讀出來成為陣列,使用排序函式進行排序,編碼是utf-8或gbk
3. 使用二分法對陣列進行遍歷,以最快的速度找到是否存在非法字元
4. 先正向匹配一次,就是讓使用者輸入內容跟關鍵字列表進行匹配,然後再反向匹配一次,就是讓關鍵字列表跟使用者輸入內容進行匹配
思路不知道對不對,反正目前是這麼想的。
[ 問題 ]
問題1: 採用文字直接儲存的方式速度是否足夠快,一行一條太慢,同時可能以後會增加。是否需要使用b+樹的方式來儲存成二進位制的,或者使用多重索引來儲存。
問題2:遍歷檔案的話,採用何種演算法比較合適,如果是文字檔案,直接使用遍歷陣列的方式是否效率足夠高?還是使用二分法或者其他演算法,但是使用二分法必須先排序,排序的話涉及到關鍵字列表的編碼問題,因為檔案原來是gbk,轉碼後是utf-8。
問題3:使用什麼字串匹配方式比較好?strcmp、strstr、strpos、或者mb_strpos,或者是直接==,或者使用正則,正則是使用ereg好還是preg_match好,那個效率高?
問題4:請大家討論下儲存方式和搜尋方式,當然,不要涉及到太深,不要涉及到分詞之類的,畢竟沒有那麼複雜。
很久沒發貼,請大家一起討論,謝謝,分不夠再加,偶有的是分,呵呵!!
使用PHP對非法內容進行檢查
使用php對非法內容進行檢查 程式思路 大致的思路比較弱智了,就是乙個檔案列表中儲存了非法關鍵字的內容,一行乙個,然後在程式中讀取非法關鍵字跟使用者輸入內容進行正則匹配,如果匹配或者模糊匹配發現是非法關鍵字,則提示使用者。關鍵字列表可能有普通的,只是不允許全字匹配的,使用精確匹配,還有一種就是絕對不...
使用PHP對非法內容進行檢查
使用php對非法內容進行檢查 程式思路 大致的思路比較弱智了,就是乙個檔案列表中儲存了非法關鍵字的內容,一行乙個,然後在程式中讀取非法關鍵字跟使用者輸入內容進行正則匹配,如果匹配或者模糊匹配發現是非法關鍵字,則提示使用者。關鍵字列表可能有普通的,只是不允許全字匹配的,使用精確匹配,還有一種就是絕對不...
談一談具體應當如何對汽車的飛輪進行檢查
起動發動機時,常發生飛輪齒圈與起動機齒輪相撞,或兩個齒輪裝配不良而引起嚙合不良,造成輪齒磨損嚴重或損壞。如果觀致 的飛輪齒圈是單面磨損,就可以翻面使用,但輪齒必須修正倒角 若雙面均已磨損過甚或輪齒損壞,則應更換齒圈。更換齒圈時,因飛輪與齒圈是過盈配合,在裝配前應把齒圈放在廢機油中加熱至300攝氏度,...