php - 如何在 PHP 中将特殊的 unicode 字符转换为最接近的 ASCII

标签 php

当用户输入特殊 Unicode 字符串(如 𝘁𝘂𝘆𝗲𝗻𝗱𝘂𝗻𝗴)时,我遇到问题,并且我的系统无法将其与以 ASCII 编写的字符串“tuyendung”区分开。问题是如何在将输入字符串存储到数据库之前将其标准化为 ASCII?

示例输入:

𝘁𝘂𝘆𝗲𝗻𝗱𝘂𝗻𝗴

(字符代码:0xd835、0xde01、0xd835、0xde02、0xd835、0xde06、0xd835、0xddf2、0xd835、0xddfb、0xd835、0xddf1、0xd835、0xde02、0xd835、0xdd FB,0xd835,0xddf4)

预期输出:

tuyendung

(字符代码:0x74、0x75、0x79、0x65、0x6e、0x64、0x75、0x6e、0x67)

最佳答案

看起来 //TRANSLIT 选项可以解决这个问题。

<?php

$input = '𝘁𝘂𝘆𝗲𝗻𝗱𝘂𝗻𝗴';
echo iconv('UTF-8', 'US-ASCII//TRANSLIT', $input);

这会将(我认为是什么?)像 𝘁 这样的数学符号变成 t

关于php - 如何在 PHP 中将特殊的 unicode 字符转换为最接近的 ASCII,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62186922/

相关文章:

php - Laravel 5.1 - 通过多个表加入

php - cURL 连接问题 - 错误设置证书验证位置

php - MySql 和 PHPMyAdmin 密码

php - 忽略不工作 Mysql

php - 使用命名空间前缀在 PHP 中获取 XML 值

php - 按类别对产品进行排序(在父类别 View 中)

php - Magento,以客户身份从管理员登录

php - 在 PDO PHP 脚本中两次使用相同的 POST 值 | mysql

php - 正则表达式第n次匹配

php - 对 PHP 项目进行基准测试的分步指南