匹配是否含有敏感詞三種方法

方法一:
/**敏感詞過濾 (沒有匹配到關鍵字就返回 false)
     * @param $content
     * @return bool
     */
    public static function sensitiveWord($content)
    {
        $fake = file_get_contents(public_path('sensitive/all.txt')); // 讀取關鍵字文本信息 這個文本就是敏感詞的文本網上都有 最好選擇最新最全的
        $content = trim(trim($content), ','); //一定要去除左右空格  最好就是把所有特殊符號也去掉
        $fuckArr = explode("\n", $fake); // 把關鍵字轉換爲數組

        for ($i = 0; $i < count($fuckArr); $i++) {
            if ($fuckArr[$i] == "") {
                continue; //如果關鍵字爲空就跳過本次循環
            }
//            dd($content, trim(trim($fuckArr[$i]),','));
            if (strpos($content, trim(trim($fuckArr[$i]), ',')) !== false) {
                $r = $fuckArr[$i]; //如果匹配到關鍵字就返回關鍵字
                return true;
            }
        }
        return false; // 如果沒有匹配到關鍵字就返回 false
    }
/********敏感*詞過濾************/
$vailTitle = ValueUtil::sensitiveWord($payload->getTitle());
if ($vailTitle) {
    throw new CustomErrorMessageException('標題含有敏感詞');
}

敏感詞鏈接:https://pan.baidu.com/s/1i1FepvCbIH1LuevmUZPWTQ 
提取碼:yehw 
 

 

方法二:調用微信官方文檔接口:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/sec-check/security.msgSecCheck.html#method-http

 public static function get_access_token()
    {
        try {
            $access_token = \Cache::get('CACHE_UTIL_TOKEN');
            if (!$access_token) {
                $client = new \GuzzleHttp\Client();
                $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=xxx&secret=xxx';
                $response = $client->request('GET', $url);
                $result = $response->getBody()->getContents();
                $data = json_decode($result, true);
                \Log::info($data);
                $access_token = $data['access_token'];
                if ($access_token) {
                    \Cache::add("CACHE_UTIL_TOKEN", $access_token, 7200 / 60);
                } else {
                    \Cache::forget('CACHE_UTIL_TOKEN');
                    ValueUtil::get_access_token();
                }
            }
            return $access_token;
        } catch (\Throwable $exception) {
            \Log::error($exception);
        }

    }
控制器中調用獲取token:
$content = '港獨';
$token = ValueUtil::get_access_token();
$client = new \GuzzleHttp\Client();
$data = json_encode(['content' => $content], JSON_UNESCAPED_UNICODE);
$url = "https://api.weixin.qq.com/wxa/msg_sec_check?access_token=" . $token;
$response = $client->request('POST', $url, [
        'body' => $data
    ]
);
$statusCode = $response->getStatusCode();
$result = $response->getBody()->getContents();
$data = json_decode($result, true);
return $data;

方法三EasyWechat文本安全內容檢測

$app = Factory::miniProgram($config);
//$config 配置詳見:https://www.easywechat.com/docs/master/mini-program/index
// 傳入要檢測的文本內容,長度不超過500K字節
$content = '你好';

$result = $app->content_security->checkText($content);
dd($result);
// 正常返回 0
{
    "errcode": "0",
    "errmsg": "ok"
}

//當 $content 內含有敏感信息,則返回 87014
{
    "errcode": 87014,
    "errmsg": "risky content"
}

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章