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

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

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

 

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

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

тема: Регулярное выражение для координат 37.273297,44.980056
 
 автор: ladan   (10.02.2012 в 02:36)   письмо автору
 
 

Всем здрасти!

нужно в preg_match задать поиск по переменной и если в ней будет найдены любые символы кроме заданных в шаблоне, то выводим ошибку

изначально можно ввести только
37.273297,44.980056
- координаты, либо вообще ничего не вводить


!preg_match("/^[0-9]{2}\.[0-9]+,[0-9]{2}\.[0-9]+$/", $map) //не подойдет


вот тут только на цифры вписал
preg_match("/[^0-9]/", $map)

Но человек может фигню какую-нибудь вписать, что карта работать не будет..

  Ответить  
 
 автор: ladan   (10.02.2012 в 02:52)   письмо автору
 
   для: ladan   (10.02.2012 в 02:36)
 

исправил на так
if(!preg_match("/^(:*|[0-9]{2}\.[0-9]+,[0-9]{2}\.[0-9]+)$/", $map)
работает, но так и не понял что такое :* в связке. Это типа пустота?

  Ответить  
 
 автор: Sfinks   (10.02.2012 в 11:25)   письмо автору
 
   для: ladan   (10.02.2012 в 02:52)
 

> но так и не понял что такое :* в связке. Это типа пустота?
Я вот тоже не знаю что это.

> !preg_match("/^[0-9]{2}\.[0-9]+,[0-9]{2}\.[0-9]+$/", $map) //не подойдет
А чем не подходит?
Какие ограничения на координаты? От 0 до 90 или от -90 до 90 или от 0 до 360 или от 0 до 89.999999 или как?

  Ответить  
 
 автор: ladan   (10.02.2012 в 12:36)   письмо автору
 
   для: Sfinks   (10.02.2012 в 11:25)
 

нет, по сути подходит, просто человек при регистрации может сам указать их(по ссылке http://api.yandex.ru/maps/tools/getlonglat/), либо если он не знаете как, то может поле не заполнять и я потом заполню. Но если руководствоваться только !preg_match("/^[0-9]{2}\.[0-9]+,[0-9]{2}\.[0-9]+$/", $map), то он не сможет вообще зарегистрироваться, если ничего не введет. Ну и я вот прописал запрос как выше и все нормально :) А ограничения хз как лучше записать. Наверно те координаты, что в России есть :)

  Ответить  
 
 автор: Sfinks   (10.02.2012 в 18:16)   письмо автору
 
   для: ladan   (10.02.2012 в 12:36)
 

> не сможет вообще зарегистрироваться, если ничего не введет
Это можно решить знаком вопроса на конце.
"/^([0-9]{2}\.[0-9]+,[0-9]{2}\.[0-9]+)?$/"
просто меня смущает ваш смайлик с поцелуйчиком :* /Оно вроде работает, но описания этому я найти не могу чет. Так надежнее =)

> ну это уже не к RegExp вопрос =) Россия ж не квадратная.

  Ответить  
 
 автор: ladan   (10.02.2012 в 18:57)   письмо автору
 
   для: Sfinks   (10.02.2012 в 18:16)
 

>просто меня смущает ваш смайлик с поцелуйчиком :*
гы =)

Спасибо, тогда лучше с вашим вариантом, так понятнее чем со смайликами :)

  Ответить  
 
 автор: Sfinks   (10.02.2012 в 19:25)   письмо автору
 
   для: ladan   (10.02.2012 в 18:57)
 

Понял я что значит этот смайлик! 0 или более символов :
Т.е. строка :::::::::::::: вполне подходит под условие :*
____
P.S. Печенкой чуял что чет тут не так =)

  Ответить  
 
 автор: ladan   (10.02.2012 в 21:17)   письмо автору
 
   для: Sfinks   (10.02.2012 в 19:25)
 

да уж :) Оказывается этот символ никакой значимости не играет. А если бы я прописал в условии =* , то уже бы думал как вот вы сейчас описали суть :) Даже не знаю почему меня смутил символ :
Наверно никогда его нигде не использовал =)

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

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