使用PHP對非法內容進行檢查

2021-04-28 20:14:03 字數 2082 閱讀 5205

//如果任何列表檔案不存在直接返回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攝氏度,...