Конвертировать "Необычные" юникод ABC в стандартные ABC - PullRequest
0 голосов
/ 08 ноября 2018

Я запускаю проверки Regex на некоторых входах на моем сайте, но Regex ошибочно возвращает false, когда пользователи используют «необычные» наборы Юникода, такие как:

Ⓜⓐⓣⓒⓗ ????? матч ????? ????? ????? ????? ????? ????? ????? ????? ????? ????? ⒨⒜⒯⒞⒣ ????? ????? 100

Это не разные шрифты, это разные символы! Ни один из них не соответствует /Match/ ( Доказательство )

Как я могу преобразовать пользовательский ввод в стандартные символы ABC перед выполнением моих проверок Regex? (Я использую PHP, если это имеет значение)

1 Ответ

0 голосов
/ 08 ноября 2018

Юникод NFKD нормализация должен позаботиться о большинстве из них. Тем не менее, кажется, что он работает, только если включен модуль intl, и у меня его нет в моей среде, поэтому я не могу его протестировать. Если у вас также нет такого PHP и вы не хотите его устанавливать, это делает что-то похожее, по крайней мере для некоторых символов:

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

Наконец, вы можете создать свое собственное отображение, например, с помощью strtr (которое, как вы потом знаете, сработает, поскольку вы написали бы его сами).

...