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

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

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

 

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

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

тема: Запятая в preg_match - что не так сделал?
 
 автор: shirker   (23.02.2008 в 11:47)   письмо автору
 
 

Может коряво сделал, но работает (почти). Задача - пользователь может вводить русские и латинские буквы, пробелы, тире, слэши для корпуса дома например, точки и цифры. Результат - тот, что и хотелось, за исключением запятой. В этом виде запятую никак не принимает:
if ( !(preg_match("/^([A-Za-z0-9а-яА-Я\/\,\-\s\.\ё\Ё]{4,45})$/i",$_POST["street"])) ){
                    echo "Укажите свой адрес (улицу, дом) правильно. Допустимы латинские и русские буквы, точки, тире, цифры и пробелы. 
                       Колличество символов - не более 45.";
                    }
Как разрешить запятую в этом выражении?

   
 
 автор: ddhvvn   (23.02.2008 в 11:58)   письмо автору
 
   для: shirker   (23.02.2008 в 11:47)
 

может запятую не надо экранировать?

   
 
 автор: shirker   (23.02.2008 в 12:15)   письмо автору
 
   для: ddhvvn   (23.02.2008 в 11:58)
 

Без разницы
preg_match("/^([A-Za-z0-9а-яА-Я,\/\-\s\.\ё\Ё]{4,45})$/i",$_POST["street"])
тоже самое...
Может быть в самом PHP дело?

   
 
 автор: _гость_   (23.02.2008 в 12:28)
 
   для: shirker   (23.02.2008 в 12:15)
 

Попробуйте вместо запятой сделать "\x2c"

   
 
 автор: ddhvvn   (23.02.2008 в 12:38)   письмо автору
 
   для: _гость_   (23.02.2008 в 12:28)
 

А зачем Вы "ё" еще экранируете?

   
 
 автор: shirker   (23.02.2008 в 13:22)   письмо автору
 
   для: _гость_   (23.02.2008 в 12:28)
 

переписал
preg_match("/^([A-Za-z0-9а-яА-ЯЁё\x2c\/\-\s\.]{4,45})$/i",$_POST["street"])
- не ест запяту((
Вот это пропускает: ул. Зел/ёнабя -дом- .78ukg
Это нет: ул. Зел/ёна,бя -дом- .78ukg

   
 
 автор: Unkind   (23.02.2008 в 14:25)   письмо автору
 
   для: shirker   (23.02.2008 в 13:22)
 

Вы что-то путаете. "Пропускает".

Но вообще, если используете двойные кавычки и "\xXX", то анализатор регулярных выражений уже получит указанный байт в "чистом виде", т.е. в данном случае ",". Точку в [...] можно не эскейпировать.
Да и модификатор "i" тут не нужен - Вы указали все диапазоны без него.

   
 
 автор: shirker   (23.02.2008 в 15:21)   письмо автору
 
   для: Unkind   (23.02.2008 в 14:25)
 

Пробовал убрать "i", ничего не изменилось. Есть подозрение на сам PHP. Само выражение я не сам придумал, а взял, наверное, даже с этого форума
preg_match("/^([A-Za-z0-9а-яА-ЯЁё\,\/\-\s\.]{4,45})$/i",$_POST["street"])
Сейчас на локальной тачке записал этот кусок кода: http://x-serv.biz/preg_match.php и запятые норм переваривает. Машина тоже на фрибсд6.2 и с PHP5
На сервере же, где должен работать код, все тоже самое, но не приемлет запятую никак.

   
 
 автор: shirker   (09.03.2008 в 23:16)   письмо автору
 
   для: shirker   (23.02.2008 в 15:21)
 

Оказалась интересная вещь - почему-то запятая при вводе считалась не как запятая, а как символ , !!!! На другом же сервере - все работало. Может есть в PHP какая-то директива, которая за это отвечает?

   
Rambler's Top100
вверх

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