Вопрос

В Zend Framework, Zend_Validate_StringLength имеет свойство кодирования, которое можно использовать для преобразования между различными наборами символов (оно использует iconv_set_encoding на строке).

Почему эта часть StringLength валидатор класс? Должен ли я использовать это с помощью проверки поля длины строки для обеспечения соблюдения UTF-8?

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

Решение

Длина строк в PHP - это количество байтов, взятых для сохранения строки. Некоторые кодировки используют несколько байтов (например, два) для хранения отдельного символа.

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

Тем не менее, я считаю, что дефолт для всех компонентов Zend является UTF-8, который является стандартом де-факто в веб-приложениях. Жаль, это не по умолчанию для PHP (пока).

Другие советы

На самом деле это использует iconv_set_encoding Только чтобы проверить, поддерживает ли текущий сервер указанный $encoding. Анкет Фактическое сравнение сделано с iconv_strlen().

Не уверен, что могу получить ваш второй вопрос. Если вам нужно проверить длину строк - вам нужно использовать этот валидатор.

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