Является ли mb_strlen подходящей заменой iconv_strlen?

StackOverflow https://stackoverflow.com/questions/2055017

  •  20-09-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

Если вам нужна замена простого strlen, используйте mb_strlen, поскольку он всегда возвращает int.Хотя это очень спорно (правильность iconv превышает устойчивость mb), но на практике отказоустойчивость mb_strlen сослужила мне большую службу.Просто убедитесь, что вы настроили mb на нужную кодировку либо в php.ini, либо в центральном месте вашего приложения.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top