Является ли mb_strlen подходящей заменой для iconv_strlen - PullRequest
1 голос
/ 13 января 2010

То есть, если я что-то полностью кодирую в PHP4? Или, возможно, мне следует вместо этого использовать пользовательскую функцию или класс / расширение для подсчета количества символов в многобайтовой строке?

Единственное отличие, которое я могу заметить, заключается в том, что mb_string удаляет плохие последовательности, а iconv_strlen - нет.

1 Ответ

2 голосов
/ 13 января 2010

Если вы хотите сделать замену обычного strlen на замену, используйте mb_strlen, так как он всегда возвращает int. Это очень спорно, хотя (правильность Iconv над допуском МБ), но на практике mb_strlen Толерантность разлома служил мне лучше. Просто убедитесь, что вы сконфигурировали mb для нужной кодировки либо в php.ini, либо в центральном месте вашего приложения.

Поддержка Unicode в PHP находится в плохом состоянии, вы должны знать о многих подводных камнях и исключениях. Сделав полное переключение нескольких крупных приложений и их пользовательских данных на UTF-8, я могу заплакать вам рекой.

...