如何解决为什么在手机上用正则表达式匹配表情符号也匹配非表情符号'和“?
这是我关于Stack Overflow的第一个问题,我很乐意提供帮助。
我使用正则表达式从用户输入的文本中检测表情符号。我用来匹配表情符号的正则表达式是:
(\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff])
但是,仅在移动设备上,它还会匹配各种非表情符号,包括'
和"
我已经尝试过其他正则表达式来进行表情符号匹配,但是没有一个比这个更简洁或也可以工作。
有人可以帮我吗?
要实时查看问题,请将文本/表情符号/符号插入“个人消息”字段(使用移动设备):https://2050.cards/shop/birthday/eskimo-surprise/
示例输入:
不应且不匹配:
Dear you,Happy Birthday.
应该匹配并且匹配:
Dear you ?,Thanks. ?
不能匹配(仅在移动设备上):
Dear you,let's all "hang out"
解决方法
正确的方法是使用Unicode property escapes。
$queryIniciar=Conexion::conectar()
->prepare("SELECT *
FROM `usuarios`
WHERE `IDENTIFICACION`=:nit
AND `CLAVE`=:clave");
$queryIniciar->bindParam(':nit',$datos['nit'],PDO::PARAM_STR);
$queryIniciar->bindParam(':clave',$datos['clave'],PDO::PARAM_STR);
$queryIniciar->execute();
$resultados=$queryIniciar->fetchAll(PDO::FETCH_ASSOC);
$_SESSION['identificacion']=$resultados;
if($_SESSION['identificacion']['ID_USUARIO_FK']==1){
header("location: ../administrador.php");
exit;
}else if($_SESSION['identificacion']['ID_TIPO_USUARIO_FK']==2){
header("location: ../cliente.php");
exit;
}
echo $queryIniciar->rowCount();
- Chrome 64(2018)
- Edge 79(2019)
- Firefox 78(2020年6月)
- 节点10(2018)
- Safari 11.1(2018)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。