微信接口获取昵称中的表情符的过滤

本文介绍了一种从微信接口获取的昵称中过滤表情符号的方法,并提供了PHP代码实现。通过对特定Unicode范围内的字符进行过滤,可以有效地移除昵称中的表情符号。
$tmpStr = '{"nickname":"\ue131\u6f6e\u978b\uff5e\u9ad8\u6893\u94b0\ud83d\udc5f\ud83d\udc5f\ud83d\udc5f"}';
$tmpStr = '{"nickname" : "\u00ce.LoVe.\ue022U-Y.t666666666\ue420"}';
$nickname = json_decode($tmpStr, true);
$tmpStr = json_encode($nickname['nickname']);
$tmpStr = preg_replace("#(\\\ud[0-9a-f]{3})|(\\\ue[0-9a-f]{3})#ie","",$tmpStr); //将emoji的unicode置为空,其他不动
$text = json_decode($tmpStr, true);

print_r($text);//你好 \ue415 hello 123


对于通过微信接口获取的昵称中,有时会带有表情符号,PC端必须通过找到对应的表情,以图片形式来展示。有时为了简单粗暴的解决,就是直接过滤掉这些表情符号,在固定区段的unicode的编码,这样也不会有筹码出现


其实有时如“\ud83d\udc5f”表情符号,这是为unicode编码形式,我们需要把它转化为16进制的编码,如\xF0\x9F\x91\x9F

再去对应符号中找到,可以从网上搜索php-emoji-master,这里包括了对应的编码转表情的方式

如果为了方便,可以不显示,那就用上面的粗暴的过虑

<think>好的,我现在需要帮助用户解决在UniApp中实现微信登录授权并获取用户昵称和头像的问题。首先,我应该回顾用户提供的引用内容,特别是引用[1]和[2],里面提到了新版微信小程序的授权流程变化,比如wx.getUserProfile不再弹窗,获取用户信息的方式有所调整,以及获取手机号需要付费等限制。 用户的需求明确,是在UniApp中使用Vue3实现微信登录授权,并获取昵称和头像。我需要确保提供的示例代码合最新的微信小程序规范,同时适配UniApp的结构。 首先,微信登录授权的基本流程应该是:调用wx.login获取code,然后通过后端服务器换取openid和session_key。但用户主要关注的是前端如何获取用户信息,比如昵称和头像。根据引用[2],wx.getUserProfile已经不再适用,所以需要使用微信的新接口,比如让用户主动填写昵称或选择头像。 接下来,我需要考虑如何在UniApp中实现这一点。可能的方法是使用按钮引导用户点击,触发获取用户信息的操作。例如,使用button组件,设置open-type为chooseAvatar来选择头像,同时绑定事件处理函数。对于昵称,可能需要一个输入框让用户手动输入,或者使用其他开放能力。 然后,代码结构方面,需要在Vue3的setup语法中处理响应式数据,比如使用ref来保存头像和昵称。同时,需要处理微信的登录流程,包括wx.login获取code,以及可能的错误处理。 还需要注意权限配置,确保小程序已经申请了相应的权限,比如用户信息权限,否则可能无法获取到数据。此外,用户可能需要将获取到的信息发送到后端服务器进行存储,所以示例代码中需要包含这部分逻辑的示意。 最后,要检查代码是否合UniApp的语法规范,比如使用uni.login代替wx.login,以及处理回调函数的方式。同时,提醒用户注意测试环境和真机调试的重要性,因为部分功能在开发工具中可能无法完全模拟。 总结步骤: 1. 创建按钮,设置open-type为getUserInfo或chooseAvatar来触发授权。 2. 在事件处理函数中获取用户信息,更新到响应式变量。 3. 调用wx.login获取code,发送到后端换取openid。 4. 处理可能的错误,如用户拒绝授权的情况。 5. 提供示例代码,并说明注意事项,如权限申请和真机调试。 现在需要将这些步骤转化为具体的代码示例,并确保合最新的微信接口要求,同时用中文清晰解释每个部分的作用。</think>以下是在UniApp(Vue3)中实现微信登录授权并获取用户头像昵称的详细实现方案: ### 一、基础授权流程 1. 创建授权按钮组件 ```html <button class="login-btn" open-type="getUserInfo" @getuserinfo="handleGetUserInfo" >微信登录</button> ``` 2. 响应式数据定义 ```javascript import { ref } from 'vue' const userInfo = ref({ avatarUrl: '', nickname: '', code: '' }) ``` ### 二、核心实现代码 ```javascript // 获取用户信息 const handleGetUserInfo = async (e) => { if (e.detail.errMsg === 'getUserInfo:ok') { // 获取微信用户信息 const { avatarUrl, nickName } = e.detail.userInfo userInfo.value.avatarUrl = avatarUrl userInfo.value.nickname = nickName // 获取登录code uni.login({ provider: 'weixin', success: (res) => { userInfo.value.code = res.code // 将code发送到服务端(示例) uni.request({ url: 'https://your-api.com/login', method: 'POST', data: { code: res.code, avatar: avatarUrl, nickname: nickName } }) }, fail: (err) => { console.error('登录失败:', err) } }) } else { uni.showToast({ title: '授权取消', icon: 'none' }) } } ``` ### 三、新版头像获取方案(2024年最新规范) ```html <!-- 头像选择 --> <button open-type="chooseAvatar" @chooseavatar="onChooseAvatar" > <image :src="userInfo.avatarUrl" class="avatar"/> </button> <!-- 昵称输入 --> <input type="nickname" v-model="userInfo.nickname" placeholder="请输入昵称" /> ``` ```javascript // 选择头像回调 const onChooseAvatar = (e) => { userInfo.value.avatarUrl = e.detail.avatarUrl } ``` ### 四、注意事项 1. 需在小程序管理后台开启`获取用户信息`权限[^2] 2. 测试时需使用真机调试,开发者工具可能无法完整模拟 3. 用户头像需使用`https`协议地址 4. 用户昵称需做敏感词过滤处理
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值