Я запускаю проверки Regex для определенных входных данных на моем сайте, но Regex ошибочно возвращает false, когда пользователи используют «необычные» наборы Unicode, такие как:
ⓜⓐⓣⓒⓗ
матч
⒨⒜⒯⒞⒣
Это не разные шрифты, это разные символы! Ни один из них не соответствует /Match/
(доказательство)
Как я могу преобразовать пользовательский ввод в стандартные символы ABC перед выполнением проверок Regex? (Я использую PHP, если это имеет значение)
Юникод НФКД нормализация следует позаботиться о большинстве из них. Тем не менее, кажется, это работает только если intl
Модуль включен, и у меня его нет в моей среде, поэтому я не могу его протестировать. Если у вас также нет такого PHP и вы не хотите его устанавливать, это делает что-то похожее, по крайней мере, для некоторых символов:
iconv("UTF-8", "ISO-8859-1//TRANSLIT", $text)
Наконец, вы можете сделать свое собственное отображение, например, используя strtr
(что вы будете знать, чтобы работать, так как вы написали бы это сами).
Других решений пока нет …