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

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

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Название города, если...

Сообщения:  [1-9] 

 
 автор: sim5   (09.04.2007 в 18:47)   письмо автору
 
   для: Loki   (09.04.2007 в 13:19)
 

Нет пробел нужен обязательно.

P.S. Еще раз прочитал "урок" - понял, что вы имели ввиду...

   
 
 автор: Loki   (09.04.2007 в 13:19)   письмо автору
 
   для: cheops   (08.04.2007 в 00:12)
 

только не

[\s]+

а

[\s]?

пробела может и не быть

   
 
 автор: sim5   (08.04.2007 в 13:50)   письмо автору
 
   для: cheops   (08.04.2007 в 13:22)
 

Все ОК! Благодарю.

   
 
 автор: cheops   (08.04.2007 в 13:22)   письмо автору
 
   для: sim5   (08.04.2007 в 09:30)
 

Попробуйте использовать следующее регулярное выражение
<?php
  $text 
"Москва";
  
$text "г. Москва";
  
$text "город Москва";
  
$pattern "/^([гсп]\.[\s]+[-а-я\s]{2,}|[-а-я]{2,})$/i";
  if(!
preg_match($pattern$text)) echo "Не соответсвует";
  else echo 
"Соответствует";
?>

   
 
 автор: sim5   (08.04.2007 в 09:30)   письмо автору
 
   для: sim5   (08.04.2007 в 06:22)
 

Зря снял. Нет, не все работает, в таком виде:


"/^([гсп]\.[\s]+)*[-а-я\s]{2,}$/"


будет верна запись город Москва, а надо чтобы в этом случае было только г. Москва. Задача ясна, как решить вроде бы понятно (читаю статью рекомендованную форумом), а описать вси эти условия с помощью "скобочек" - нифига не получается.

   
 
 автор: sim5   (08.04.2007 в 06:22)   письмо автору
 
   для: sim5   (08.04.2007 в 05:40)
 

Все, вопрос снимается. Благодарю Хеопс, дописал так:

"/^([гсп]\.[\s]+)*[-а-я\s]{2,}$/"


все работает.

   
 
 автор: sim5   (08.04.2007 в 05:40)   письмо автору
 
   для: cheops   (08.04.2007 в 00:12)
 

Да, так теперь пробел обязательно учитывается, но нельзя написать просто МОСКВА, например. Тоесть, мне надо реализовать следующее условие, название населенного пункта можно написать так:

Москва
или г. Москва

если пишут город Москва - запретить, и заставить сократить до г. (с обязательным пробелом) Москва. Соответственно для села и поселка. Но названия крупных (известных) городов позволить записывать просто - Москва, то есть (гсп,точка и пробел) могут отсутствовать.

   
 
 автор: cheops   (08.04.2007 в 00:12)   письмо автору
 
   для: sim5   (07.04.2007 в 20:34)
 

Квадратные скобки - это всегда один символ, лучше поступить примерно так
"/^[гсп]\.[\s]+[-а-я\s]{2,}$/"

   
 
 автор: sim5   (07.04.2007 в 20:34)   письмо автору
 
 

Не могу задать условие, если название города записано, например, так:

г. Москва,

присутсвует литерал г (с или п - для села и поселка соответственно) и точка, то после них обязательно должен идти пробел или они могут отсутствовать. Пробовал через группы литералов так:


"/^[(г\.\s)|(с\.\s)|(п\.\s)]*[-а-я\s]{2,}$/"


не работает условие. Как правильно записать такое условие? И обязательно ли в группе литералов указывать ?:, чтобы не запоминать их?

   

Сообщения:  [1-9] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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