将“花式” Unicode ABC转换为标准ABC

时间:2018-11-08 04:50:47

标签: php regex unicode preg-match special-characters

我对网站上的某些输入运行正则表达式检查,但是当用户使用“花式” Unicode集(例如:

)时,正则表达式错误地返回false。

Ⓜⓐⓣⓒⓗ Match ⒨⒜⒯⒞⒣  

这些不是不同的字体,它们是不同的字符! /Match/Proof)都不匹配

在执行Regex检查之前,如何将用户输入转换为标准ABC字符? (如果使用的话,我正在使用PHP)

1 个答案:

答案 0 :(得分:2)

NFKD Unicode normalisation应该处理大多数此类问题。但是,似乎只有启用intl模块才有效,而且我的环境中没有该模块,因此无法对其进行测试。如果您也没有这样的PHP,并且不想安装它,那么这样做至少在某些字符上会做一些类似的事情:

iconv("UTF-8", "ISO-8859-1//TRANSLIT", $text)

最后,您可以创建自己的映射,例如使用strtr(由于您自己编写了映射,因此您将知道该映射起作用)。