валидация строки кодировке utf

флоппик

promotor fidei
Команда форума
Партнер клуба
Список поддерживаемых символов полный, или?

А так:
mb_detect_encoding($str, 'UTF-8', true);

см 3 параметр.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
вопрос немного абстрактный - думаю про средство валидации вообще, и хочется скорости, так что iconv utf8->utf8 - скорее всего лучший вариант, если он подключен

судя по комментам, mb_check_encoding не проверяет валидность, а что именно он проверяет - не понимаю
 

Kotofey

FloodMaster.
вопрос немного абстрактный - думаю про средство валидации вообще, и хочется скорости, так что iconv utf8->utf8 - скорее всего лучший вариант, если он подключен

судя по комментам, mb_check_encoding не проверяет валидность, а что именно он проверяет - не понимаю
не mb_check, а mb_detect :) по названию не сложно догадаться.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
судя по комментам, mb_check_encoding не проверяет валидность, а что именно он проверяет - не понимаю
define валидность.
ASCII строка из диапазона первых 127 символов вполне валидна как UTF-8 строка. При этом не содержит ни одного многобайтового символа.
 

fixxxer

К.О.
Партнер клуба
Код:
>>> $t=microtime(1);for ($i=0;$i<1000000;++$i)iconv("utf-8", "utf-8", "lsfkjhzlkfjhslfkjahlfkjashflkasjhflaskdfjhsalkdjfhsadlkfjh");microtime(1)-$t;
=> 1.7362649440765
>>> $t=microtime(1);for ($i=0;$i<1000000;++$i)mb_detect_encoding("lsfkjhzlkfjhslfkjahlfkjashflkasjhflaskdfjhsalkdjfhsadlkfjh", "utf-8", 1);microtime(1)-$t;
=> 1.3777210712433
Да не особо разница.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
@флоппик, например, koi-8 символы из второй части ascii, которые приведут к sql error при вставке в postgres
 

AnrDaemon

Продвинутый новичок
@флоппик, например, koi-8 символы из второй части ascii, которые приведут к sql error при вставке в postgres
Prepared statements.
Но если надо в принципе валидировать кодировку, то iconv.
Кстати, если кто не знал, вместо входной и/или выходной кодировки iconv() можно передавать null. Будет использована кодировка текущей локали.
 
Последнее редактирование:
Сверху