Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Проверка кириллических символов через strlen()
$wrong='<li>Логин выходит за диапазон 2-20 символов</li>';}
Как вы видите он проверяет колличесво символов в переменной $login
Вроде бы всё отлично, но при проверке русских логинов возникают проблемы.
1 символ считается за 2. Вот примеры значений $login:
u //верно (выдаётся ошибка)
1 //верно (выдаётся ошибка)
г //не верно (ошибка не выдаётся)
Помогите, пожалуйста, решить проблему. Как заставить 1 кириллический символ считать за 1, а не за 2?
Заранее спасибо!
Покинул форум
Сообщений всего: 3
Дата рег-ции: Авг. 2008
Помог: 0 раз(а)
UA.ProG, если бы оно считало нормально, то я бы не спрашивал
Так же если поставить strlen($login)<10, то ошибка не выведется уже при 5-ти кириллических символах. От кодировки как-нить зависит это?
UA.ProG
Отправлено: 15 Августа, 2008 - 02:11:07
Частый гость
Покинул форум
Сообщений всего: 171
Дата рег-ции: Июль 2008 Откуда: Николаев,Украина
Покинул форум
Сообщений всего: 820
Дата рег-ции: Апр. 2008 Откуда: Россия
Помог: 0 раз(а)
по теме ниче конкретно сказать не могу. не встречал такой гадости... у меня все корректно эта функция обрабатывает вроде. может как то так попробовать? http://php.su/functions/?mb-strlen
UA.ProG пишет:
тю да норм оно считает один символ ето один байт. вроде оно всё норм считает
функция считает количество символов а не байт.
----- о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
Роман
Отправлено: 15 Августа, 2008 - 09:06:54
Новичок
Покинул форум
Сообщений всего: 3
Дата рег-ции: Авг. 2008
Помог: 0 раз(а)
UA.ProG, у меня и есть UTF-8 (Добавление)
Вездеход пишет:
http://php.su/functions/?mb-strlen
Выдаёт
Цитата:
Call to undefined function mb_strlen()
Возможно из-за того что (PHP 4 >= 4.0.6) Версия php от 4 до 4.0.6 у меня пятёрка... (Добавление)
Выяснил в чём проблема. в UTF-8 1 кириллический символ = 2байтам..
Даже не знаю что теперь делать.. Возвращаться на ANSI или искать решение для UTF-8 (Добавление) Вездеход, спасибо. На другом хостинге, где есть расширение mbstring, всё заработало))
Вот таким вт образом (если вдруг кому понадобится)
Покинул форум
Сообщений всего: 171
Дата рег-ции: Июль 2008 Откуда: Николаев,Украина
Помог: 0 раз(а)
[+]
Вездеход пишет:
функция считает количество символов а не байт.
слушай никогда не задумывался как оно считает кол-во символов? один символ занимает байт(или два) памяти. как оно поймет сколько мы символов написали, по другому!выдвигай свою версию.Будешь вносить новые возможности в ПХП
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.