PHP - обнаружение введенного пользователем набора символов - PullRequest
0 голосов
/ 31 января 2012

Возможно ли определить набор символов строки пользователя?

Если нет, то как насчет следующего вопроса ..

Существуют ли надежные встроенные функции PHPэто может точно сказать, если пользователь предоставил строку (будь то через get / post / cookie и т. д.), в UTF-8 или нет?Другими словами, могу ли я сделать что-то вроде

is_utf8 ($ _ GET ['first_name'])

Есть ли такая функция, которая может выдавать TRUE, если в действительности first_name не было в UTF-8?

1 Ответ

1 голос
/ 31 января 2012

Относительно 1:

Вы можете попробовать mb_detect_encoding, но это в значительной степени выстрел в темноте.«Кодированная» строка - это просто набор байтов.Такие последовательности байтов часто одинаково действительны в любом количестве различных кодировок.Следовательно, по определению невозможно точно определить неизвестную кодировку , вы можете только догадываться.По этой причине существуют метаинформация, такая как заголовки HTTP, которые должны сообщать кодировку передаваемого контента.Проверьте их, если они доступны.

Относительно 2:

mb_check_encoding($var, 'UTF-8') сообщит вам, является ли строка допустимой строкой UTF-8.Насколько я видел, в последних версиях PHP он делает то, что говорит на жестяной банке.Это по-прежнему не означает, что строка действительно является строкой UTF-8, это просто означает, что последовательность байтов находится в порядке, который действителен в UTF-8.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...