Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> preg_match и юникод 
V
    Опции темы
Exmajor
  Дата 29.3.2007, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 29.3.2007

Репутация: нет
Всего: нет



Непонятно почему не определяются СКОБКИ если они присутствуют в $login smile 

Код

$login = $_POST['loginchik'];

print "<br>".$login."<br>"; // Здесь все корректно печатается в ютф

if (trim($login) == '' ||  preg_match('/[^(-_\w)|(\s)|(\x{0410}-\x{044F}\x{0401}\x{0451})|(\x28-\x29)]/u', trim($login))) {
    print "NO";
}else{
    print "Yes!";
}



Как вы уже поняли идет простейшая и банальная проверка введенных символов. Допускаются -_ пробел и рус./лат. буквы. 
Но и скобки тоже вобщем то лишние. Так вот несмотря на добаление (\x28-\x29) они приспокойно пропускаются и мы имеем радостное "Yes!". smile 

Перерытые массы Мб-тов на форумах ничего не дали... Все из области теории или "надо бы". 

А есть те, кто сам сталкивался с этой проблемой и успешно ее решил?  smile 
PM MAIL WWW   Вверх
Wowa
Дата 29.3.2007, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



Цитата(Exmajor @  29.3.2007,  09:31 Найти цитируемый пост)
\x{044F}

а что это за символ?
PM WWW   Вверх
SelenIT
Дата 29.3.2007, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 8
Всего: 401



Exmajor, давно ли круглые скобки имеют специальное значение в символьных классах? ;)

Wowa, по-видимому, это маленькая "я"...


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
Exmajor
Дата 29.3.2007, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 29.3.2007

Репутация: нет
Всего: нет



Цитата(SelenIT @  29.3.2007,  13:35 Найти цитируемый пост)
давно ли круглые скобки имеют специальное значение 

Да пробовал я уж по всякому и так .... (\(\)) но не хочет что то.
Видать где то хорошо притормозил я smile  Но на трех машинах проверял!!!
Счас буду думать дальше... smile 
PM MAIL WWW   Вверх
SelenIT
Дата 29.3.2007, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 8
Всего: 401



Exmajor, что вообще у Вас круглые скобки делают в квадратных? И что мешает записать все диапазоны просто подряд?

Кстати, "_" уже в любом случае входит в \w. При правильно настроенной локали, AFAIK, русские буквы - тоже. А еще цифры туда входят...


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
Exmajor
Дата 29.3.2007, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 29.3.2007

Репутация: нет
Всего: нет



Цитата(SelenIT @  29.3.2007,  16:00 Найти цитируемый пост)
И что мешает записать все диапазоны просто подряд?

А ведь точно! Нафига так написал... smile Счас перепишу сие "творение".
Ну вот по этому сюда и зашел - получить совет от тех кто чаще с этим сталкивается. Результат обязательно выложу сюда - вдруг кому еще понадобится...
PM MAIL WWW   Вверх
Exmajor
Дата 29.3.2007, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 29.3.2007

Репутация: нет
Всего: нет



И так с вашей помощью и любезными подсказками переписал:
Код

if (trim($login) == '' ||  !preg_match('/^[-\w\s\x{0410}-\x{044F}\x{0401}\x{0451}%28%29]{2,20}$/u', trim($login))) {
    print "NO";
}else{
    print "Yes!";
}

Все работает классно, включая проверку на длину строки (2-20 символов)!
Но теперь пролазит знак процента!!!! smile 
Подстановка %25 ничего не дает smile  Есть идеи?

Это сообщение отредактировал(а) Exmajor - 29.3.2007, 18:07
PM MAIL WWW   Вверх
SelenIT
Дата 29.3.2007, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 8
Всего: 401



Что еще за %28%29? Предлагаю отправить их вслед за скобками... ;)


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
Exmajor
Дата 29.3.2007, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 29.3.2007

Репутация: нет
Всего: нет



Цитата(SelenIT @  29.3.2007,  18:09 Найти цитируемый пост)
Что еще за %28%29? Предлагаю отправить их вслед за скобками... ;) 

Верная идея! Я уже понял. Осталось решить чего ж всеже поставить smile

Добавлено через 5 минут и 3 секунды
А все оказалось проще - ничего подставлять не надо! smile 
Тема закрыта! 

И так обрабатываем таким вариантом:
Код

if (trim($login) == '' ||  !preg_match('/^[-\w\s\x{0410}-\x{044F}\x{0401}\x{0451}]{2,20}$/u', trim($login))) {
    print "NO";
}else{
    print "Yes!";
}

Прекрасно обнаруживает все "лишнее" при ютф-е smile 

P.S. Это видать от хронического недосыпу дались мне эти скобки smile 

PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.0556 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.