PHP网页怎么获取头像昵称有事吗微信昵称?

Google提供的广告PHP处理微信昵称emoji方法
今天刚做了一个微信应用,在获取微信昵称的过程中报错了,经查原因是微信昵称中包含emoji字符,在写入数据库的时候出错,所以想办法在写入之前把这些字符过滤掉,于是在网上找到一个方法,记录一下。
移除微信昵称中的emoji字符:
function removeEmoji($nickname) {
$clean_text = "";
$regexEmoticons = '/[\x{1F600}-\x{1F64F}]/u';
$clean_text = preg_replace($regexEmoticons, '', $text);
$regexSymbols = '/[\x{1F300}-\x{1F5FF}]/u';
$clean_text = preg_replace($regexSymbols, '', $clean_text);
$regexTransport = '/[\x{1F680}-\x{1F6FF}]/u';
$clean_text = preg_replace($regexTransport, '', $clean_text);
$regexMisc = '/[\x{2600}-\x{26FF}]/u';
$clean_text = preg_replace($regexMisc, '', $clean_text);
$regexDingbats = '/[\x{2700}-\x{27BF}]/u';
$clean_text = preg_replace($regexDingbats, '', $clean_text);
return $clean_text;
另外还发现一个github开源应用,还没有研究测试。
补充:今天又在网上找到一个更简单的方法
// 过滤掉emoji表情
function filterEmoji($str)
$str = preg_replace_callback( '/./u',
function (array $match) {
return strlen($match[0]) &= 4 ? '' : $match[0];
return $str;
获取微信昵称时 过滤特殊字符
微信传回昵称带有emoj表情,php去除emoj表情
新篇章,关于Thinkphpu将emoji写入myql
PHP 微信 Emoji表情处理
emoji处理方式大起底
解决微信昵称特殊字符存放数据库报错问题
(转)处理微信昵称emoji方法
java过滤微信昵称emoji表情与非emoji的问题解决方法
【MySQL】mysql存储昵称带有emoji处理方案
微信nickname乱码(emoji)及mysql编码格式设置(utf8mb4)解决的过程__https://segmentfault.com/a/4385
没有更多推荐了,微信网页授权获取用户基本信息--PHP - 跳动的汗水 - 博客园
随笔 - 98, 文章 - 2, 评论 - 6, 引用 - 0
现在就说说怎么通过网页授权获取用户基本信息(国家,省,市,昵称)等。
1)公众号认证
2)有网页授权获取用户基本信息的权限接口
注意:最近有朋友说:在公众平台申请的测试号,会出现无法取到用户信息。换到认证的公众账号就正常了!
&&&&&&如果您也遇到这个问题,可以试试在认证的公众账号里测试一下! 感谢大家的支持!
填写授权回调页面的域名
登录公众平台--&开发者中心--&接口权限表
找到&网页授权获取用户基本信息&&然后修改--&填写你的域名.如下:
---------------------------------------------------
关于网页授权的两种scope的区别说明(官方)
1、以snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面)
2、以snsapi_userinfo为scope发起的网页授权,是用来获取用户的基本信息的。但这种授权需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的基本信息。
3、用户管理类接口中的&获取用户基本信息接口&,是在用户和公众号产生消息交互或关注后事件推送后,才能根据用户OpenID来获取用户基本信息。这个接口,包括其他微信接口,都是需要该用户(即openid)关注了公众号后,才能调用成功的。
因为scope有两中模式,所以下面分开解说:
scope为snsapi_base&那么用户必须是关注了公众号才能取得信息
先自己建立两个文件:&index.php &和 &getUserInfo.php
index.php如下:
$appid='你的AppId';
$redirect_uri&=&urlencode&(&'http://你的域名/getUserInfo.php'&);
$url&="https://open.weixin.qq.com/connect/oauth2/authorize?appid=$appid&redirect_uri=$redirect_uri&response_type=code&scope=snsapi_base&state=1#wechat_redirect";
header("Location:".$url);
getUserInfo.php如下:
$appid&=&"你的AppId";&&
$secret&=&"你的AppSecret";&&
$code&=&$_GET["code"];
$url&=&"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$secret";
$token&=&getJson($url);
$oauth2Url&=&"https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$secret&code=$code&grant_type=authorization_code";
$oauth2&=&getJson($oauth2Url);
$access_token&=&$token["access_token"];&&
$openid&=&$oauth2['openid'];&&
$get_user_info_url&=&"https://api.weixin.qq.com/cgi-bin/user/info?access_token=$access_token&openid=$openid&lang=zh_CN";
$userinfo&=&getJson($get_user_info_url);
&&print_r($userinfo);
function&getJson($url){
&&&&$ch&=&curl_init();
&&&&curl_setopt($ch,&CURLOPT_URL,&$url);
&&&&curl_setopt($ch,&CURLOPT_SSL_VERIFYPEER,&FALSE);&
&&&&curl_setopt($ch,&CURLOPT_SSL_VERIFYHOST,&FALSE);&
&&&&curl_setopt($ch,&CURLOPT_RETURNTRANSFER,&1);
&&&&$output&=&curl_exec($ch);
&&&&curl_close($ch);
&&&&return&json_decode($output,&true);
scope为snsapi_userinfo&用户不用关注公众号,也能取到信息,但是会有一个界面让用户去点击确认!相当于一个登录授权吧!
index.php如下:
$appid='你的AppId';
$redirect_uri&=&urlencode&(&'http://你的域名/getUserInfo.php'&);
$url&="https://open.weixin.qq.com/connect/oauth2/authorize?appid=$appid&redirect_uri=$redirect_uri&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect";
header("Location:".$url);
getUserInfo.php如下:
$appid&=&"你的AppId";&&
$secret&=&"你的AppSecret";&&
$code&=&$_GET["code"];
$oauth2Url&=&"https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$secret&code=$code&grant_type=authorization_code";
$oauth2&=&getJson($oauth2Url);
$access_token&=&$oauth2["access_token"];&&
$openid&=&$oauth2['openid'];&&
$get_user_info_url&=&"https://api.weixin.qq.com/cgi-bin/user/info?access_token=$access_token&openid=$openid&lang=zh_CN";
$userinfo&=&getJson($get_user_info_url);
&&print_r($userinfo);
function&getJson($url){
&&&&$ch&=&curl_init();
&&&&curl_setopt($ch,&CURLOPT_URL,&$url);
&&&&curl_setopt($ch,&CURLOPT_SSL_VERIFYPEER,&FALSE);&
&&&&curl_setopt($ch,&CURLOPT_SSL_VERIFYHOST,&FALSE);&
&&&&curl_setopt($ch,&CURLOPT_RETURNTRANSFER,&1);
&&&&$output&=&curl_exec($ch);
&&&&curl_close($ch);
&&&&return&json_decode($output,&true);
创建index.php和getUserInfo.php两个文件后&
先测试:scope为snsapi_base
1)先关注公众账号
2)将网址: http://你的域名/index.php&生成一个二维码!&
3)用微信扫一扫
再测试:scope为snsapi_userinfo
1)替换代码
2)取消关注当前公众号.
3)然后用微信扫一扫,刚刚你生成的二维码.
最后就结束了.....

我要回帖

更多关于 获取头像昵称有事吗 的文章

 

随机推荐