Является ли mb_strlen подходящей заменой iconv_strlen?
-
20-09-2019 - |
Вопрос
То есть, если я пишу что-то полностью на PHP4?Или, возможно, мне следует вместо этого использовать специальную функцию или класс/расширение для подсчета количества символов в многобайтовой строке?
Единственное отличие, которое я могу заметить, заключается в том, что mb_string удаляет неправильные последовательности, а iconv_strlen — нет.
Решение
Если вам нужна замена простого strlen, используйте mb_strlen, поскольку он всегда возвращает int.Хотя это очень спорно (правильность iconv превышает устойчивость mb), но на практике отказоустойчивость mb_strlen сослужила мне большую службу.Просто убедитесь, что вы настроили mb на нужную кодировку либо в php.ini, либо в центральном месте вашего приложения.
Поддержка Unicode в PHP находится в плохом состоянии, нужно знать о многих подводных камнях и исключениях.Сделав полный перевод нескольких крупных приложений и их пользовательских данных на UTF-8, я мог бы выплакать вам реку.