冰楓論壇

 找回密碼
 立即註冊
ads_sugarbook
搜索
查看: 2571|回覆: 0

[心得] php 敏感詞過濾高級版

[複製鏈接]

33

主題

0

好友

34

積分

新手上路

Rank: 1

UID
62810
帖子
64
主題
33
精華
0
積分
34
楓幣
2964
威望
32
存款
0
贊助金額
0
推廣
0
GP
32
閱讀權限
10
性別
保密
在線時間
41 小時
註冊時間
2014-5-26
最後登入
2019-5-7
發表於 2015-6-28 14:08:52 |顯示全部樓層
前面介紹過一個過濾了些特殊字符的php程序,下面我們升級一下這個敏感詞過濾函數更強大了有了它再也不怕敏感詞中間加空格或者其他標點符號了。

只要用戶可以發言的地方,就可能出現廣告或者其他敏感詞,因此必須加入敏感詞過濾機制來保持站點的」純潔」。
過濾機制:加入php關鍵字正則匹配
//$str 為用戶數據
function wordFilter($str)
{
       /*
    獲取敏感詞列表
    敏感詞的存儲方法:
    1:存儲在txt文件中(一般的方法)
    2:存儲在緩存(比較好的方法)
    我是存儲在memcachd中。
    */
    $words = getSensitiveWords();
    foreach ($words as $word)
    {
        $preg_letter = '/^[A-Za-z]+$/';
        if (preg_match($preg_letter, $str))
        {//匹配中文
        $str = strtolower($str);
        $pattern_1 = '/([^A-Za-z]+' . $word . '[^A-Za-z]+)|([^A-Za-z]+' . $word . '\s+)|(\s+' . $word . '[^A-Za-z]+)|(^' . $word . '[^A-Za-z]+)|([^A-Za-z]+' . $word.'$)/';
        //敏感詞兩邊不為空
        if (preg_match($pattern_1, $str))
        {
            $flag = TRUE;
        }
        $pattern_2 = '/(^' . $word . '\s+)|(\s+' . $word . '\s+)|(\s+' . $word . '$)|(^' . $word . '$)/';
        //敏感詞兩邊可以為空格
        if (preg_match($pattern_2, $str))
        {
            $flag = TRUE;
        }
        }
        else
        {//匹配英文字符串,大小寫不敏感
        $pattern = '/\s*' . $word . '\s*/';
        if (preg_match($pattern, $str))
        {
            $flag = TRUE;
        }
        }
    }
}
存在問題:
如果單純只加入關鍵字匹配,用戶反過濾的方法五花八門,包括中間加入空格或者其他標點符號。
例子:
敏感詞:扣扣
用戶處理後:
扣 扣
扣,扣
扣@扣
扣1扣
這時候代碼的正則匹配就可能匹配不出來。
解決辦法:
先對用戶數據去除所有的標點符號和一些特殊字符,然後再進行敏感詞判斷。
代碼:
$flag_arr=array('?','!','¥','(',')',':','『','』','「','」','《','》',',','…','。','、','nbsp','】','【','~');
        $content_filter=preg_replace('/\s/','',preg_replace("/[[:punct:]]/",'',strip_tags(html_entity_decode(str_replace($flag_arr,'',$content),ENT_QUOTES,'UTF-8'))));
$content_filter 就是處理後的用戶數據,然後再進行 wordFilter($content_filter ) 過濾操作
複製連結並發給好友,以賺取推廣點數
簡單兩步驟,註冊、分享網址,即可獲得獎勵! 一起推廣文章換商品、賺$$
高級模式
B Color Image Link Quote Code Smilies |上傳

廣告刊登意見回饋關於我們職位招聘本站規範DMCA隱私權政策

Copyright © 2011-2024 冰楓論壇, All rights reserved

免責聲明:本網站是以即時上載留言的方式運作,本站對所有留言的真實性、完整性及立場等,不負任何法律責任。

而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。

小黑屋|手機版|冰楓論壇

GMT+8, 2024-3-29 13:23

回頂部