Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Ошибка в моём выражении?
 
 автор: rreimche   (16.06.2012 в 18:05)   письмо автору
 
 

Почему-то строка, которая, по-моему, должна проверку проходить, её не проходит.

Проверяются данные, посланные PHP скрипту из формы:


$string_exp = "/^[- ,.A-Za-zА-Яа-я0-9]+$/";

if(!preg_match($string_exp,$tour_title)) {
    $error_message .= '<li>Некорректные данные в названии тура.</li>';
  }

(это одна из проверок в скрипте)



Ну и дальше, если в $error_message что-то записано, то вместо действий скрипт выводит сообщение об ошибке.

По-моему, если в строке есть только тере, пробел, точка, запятая, буквы любого регистра латинского и русского алфавитов и цифры -- ошибки быть не должно.

Но строку "Желтая черепаха" скрипт отрабатывает как не подходящую.

  Ответить  
 
 автор: Саня   (16.06.2012 в 18:22)   письмо автору
 
   для: rreimche   (16.06.2012 в 18:05)
 

Тут либо несовпадение кодировок паттерна и проверяемой строки, либо вы вводите "Жёлтая черепаха", что, действительно, считается некорректным. Буква "ё" в кодировке cp1251 находится в совершенно другом месте, отдельно от основного алфавита, поэтому в диапазон а-я она не попадает. В паттерн её нужно добавлять явно:
/^[- ,.A-Za-zА-Яа-яЁё0-9]+$/

  Ответить  
 
 автор: rreimche   (16.06.2012 в 23:54)   письмо автору
 
   для: Саня   (16.06.2012 в 18:22)
 

Было через "е". Сейчас ещё попробовал разные варианты типа:

abvgd
абвгд
Абвгда
АбрикосыАпельсины
Абрикосы
Абр

Где-то всё ок, где-то не проходит. С априкосоапельсинами срезается на букве "р".

Кодировка?

  Ответить  
 
 автор: Sfinks   (18.06.2012 в 23:31)   письмо автору
 
   для: rreimche   (16.06.2012 в 23:54)
 

У вас UTF?
Замените
$string_exp = "/^[- ,.A-Za-zА-Яа-я0-9]+$/";
на
$string_exp = "/^[- ,.A-Za-zА-Яа-я0-9]+$/u";

  Ответить  
 
 автор: rreimche   (19.06.2012 в 14:01)   письмо автору
 
   для: Sfinks   (18.06.2012 в 23:31)
 

К сожалению, не помогло.

Форма появляется, например, здесь http://demo.romanreimche.com/questtravel/tours/eastern-oriental-express-в-юго-восточной-азии-легенды-хол/#

по клику на "заказать".

  Ответить  
 
 автор: Sfinks   (19.06.2012 в 14:47)   письмо автору
 
   для: rreimche   (19.06.2012 в 14:01)
 

А в РВ первые 4 символа это что вы хотели обозначить? Просто символы? Тогда их нужно экранировать:
$string_exp = "/^[\-\s\,\.A-Za-zА-Яа-яёЁ0-9]+$/";

  Ответить  
 
 автор: rreimche   (19.06.2012 в 19:36)   письмо автору
 
   для: Sfinks   (19.06.2012 в 14:47)
 

хотел обозначить тере, пробел, запятую и точку.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования