方法一:
/**敏感詞過濾 (沒有匹配到關鍵字就返回 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"
}