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

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

示例输入:

𝘁𝘂𝘆𝗲𝗻𝗱𝘂𝗻𝗴

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

预期输出:

图延东

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


慕桂英546537
浏览 200回答 2
2回答

慕工程0101907

看起来这个//TRANSLIT选项可以解决这个问题。<?php$input = '𝘁𝘂𝘆𝗲𝗻𝗱𝘂𝗻𝗴';echo iconv('UTF-8', 'US-ASCII//TRANSLIT', $input);这将(我认为是什么?)像𝘁这样的数学符号变成了t

一只名叫tom的猫

我不知道“tuyendung”是什么。但在 php 中,您可以使用“iconv”函数转换字符集,或者您可以将原始形式保留在数据库的 blob 字段中。您可以在筛选中进行任何转换。也许它给出了一个想法。
打开App,查看更多内容
随时随地看视频慕课网APP