PHP调用微信敏感词检测(msg_sec_check)、图片检测(img_sec_check)
php开发的小伙伴可能都会遇到,在使用敏感词检测接口(msg_sec_check)的时候,不管中文传什么内容返回的结果都是验证通过的,原因是json_encode中文转Unicode了。解决这个问题可以在json_encode加上参数JSON_UNESCAPED_UNICODE,禁止将中文转Unicode,如:json_encode($data, JSON_UNESCAPED_UNICODE),这样问题就解决了。
给大家伙详细记录代码
如下:
第一步获取token
public function getAccessToken() { $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$config['appid']}&secret={$config['appsecret']}"; $res = json_decode($this->http_request($url)); $access_token = $res->access_token; return $access_token; }
第二步请求设置
private function http_request($url, $data = null) { $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); if (!empty($data)) { curl_setopt($curl, CURLOPT_POST, TRUE); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); } curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); $output = curl_exec($curl); curl_close($curl); return $output; }
微信图片敏感内容检测
$filePath = ROOT_PATH . ‘/public/dev/tmp1.png’;
一定要是绝对路径
img可以是网址图片
public function imgSecCheck($img) { $img = file_get_contents($img); $filePath = ROOT_PATH . '/public/dev/tmp1.png'; file_put_contents($filePath, $img); $obj = new CURLFile(realpath($filePath)); $obj->setMimeType("image/jpeg"); $file['media'] = $obj; $token = $this->getAccessToken(); $url = "https://api.weixin.qq.com/wxa/img_sec_check?access_token=$token"; $info = $this->http_request($url, $file); return json_decode($info, true); }
效果图:
微信文字敏感内容检测
public function msgSecCheck($msg) { $data = json_encode(array('content' => $msg), JSON_UNESCAPED_UNICODE); $token = $this->getAccessToken(); $url = "https://api.weixin.qq.com/wxa/msg_sec_check?access_token=$token"; $info = $this->http_request($url, $data); return json_decode($info, true); }
效果图:
到此结束,感谢阅读。
对您有帮助的话留下个关注,点赞收藏吧~
来源地址:https://blog.csdn.net/qq_42342282/article/details/127682364