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

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

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

 

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

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

тема: Помогите с регулярными выражениями (почтовый адрес)
 
 автор: feniksua   (01.09.2009 в 20:57)   письмо автору
 
 

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

УЛ. ПОБЕДЫ Дом 32А
УЛ. СОВЕТСКАЯ Дом 26/6
ПЕР. НАДЕЖДЫ КРУПСКОЙ Дом 2
УЛ. КАРЛА МАРКСА Дом 11/29
УЛ. 1905 ГОДА Дом 37
УЛ. 40 ЛЕТ ОКТЯБРЯ Дом 58/2
и т.д., необходимо вытянуть ( ПЕР. НАДЕЖДЫ КРУПСКОЙ и 2), т.е. две переменные без "Дом".

Пишу следующее, но не срабатывает:

$pattern =
"|".".".
"*([^>]*) Дом".".".
"*([^>]*)".".".
"*|isU";

$text = preg_match_all($pattern, $text, $out);
for($i = 0; $i < count($out[0]); $i++)
{
echo '<hr whith="100%" style="border: 1px blue dashed;"></hr>';
echo "1: Улица №: <strong>".$out[1][$i]."</strong><br>";
echo "2: Дом: <strong>".$out[2][$i]."</strong><br>";
}

  Ответить  
 
 автор: feniksua   (01.09.2009 в 21:36)   письмо автору
 
   для: feniksua   (01.09.2009 в 20:57)
 

Спасибо, сам разобрался:

$pattern = "/([^>]*) Дом ([^>]*)/i";

  Ответить  
 
 автор: heed   (01.09.2009 в 22:10)   письмо автору
 
   для: feniksua   (01.09.2009 в 20:57)
 

долго не мог понять почему не работают никакие выражения :)
оказалось скопировал как есть $text = preg_match_all($pattern, $text, $out);
<pre><?
$text
=<<<TXT
УЛ. ПОБЕДЫ Дом 32А 
УЛ. СОВЕТСКАЯ Дом 26/6 
ПЕР. НАДЕЖДЫ КРУПСКОЙ Дом 2
УЛ. КАРЛА МАРКСА Дом 11/29 
УЛ. 1905 ГОДА Дом 37 
УЛ. 40 ЛЕТ ОКТЯБРЯ Дом 58/2 
и т.д., необходимо вытянуть ( ПЕР. НАДЕЖДЫ КРУПСКОЙ и 2), 
т.е. две переменные без "Дом".
Пишу следующее, но не срабатывает:
TXT
;

$pattern "|.*([^>]*) Дом.*([^>]*).*|isU"# Ваше выражение
# , [^>]* включит всё включая переносы строк , как и .*   поскольку /s
preg_match_all($pattern$text$out,2);
print_r($out);

?>

--------------------------
<?

$p2 
'#^([УЛПЕР]+\..*?) Дом *(\S+)#m'# multiline вариант
#  , с проверкой [УЛПЕР]+\. , которую можно выкинуть
preg_match_all($p2$text$out,2); 
print_r($out);

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

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