PHP Ругулярные вырожения нужна помощь..

dareks

Новичок
PHP Ругулярные вырожения нужна помощь..

Доброго времени суток.
Мне нужна Ваша помощь знактоки регулярных вырожений.
Есть задача:
1. Есть список Улиц и домов ну само собой квартир.
2. Нужно с помощью регулярного выроженя разобрать строку адресса
ПРмеры строк адресса:
Бухареська д. 32 кв. 31
Доватора д. 24 кв. 18
Каткова д. 11 кв. 45
Чорногорська б. 48 кв. *
А. Овсієнко д. 45 кв. х
Абаканська д. 4
Авіаційна д. 4 кв. 3
Авіаційна д. 4 кв. 3
Авіаційна д. 6 кв. 32
Аврори б. 6 кв. Х
Аврори д. 52 кв. 7
Агафонова д. 21 кв. x
Агрономічна д. 37 кв. -
Адм. Головко б. 2 кв. 121
Адм. Головко д. 60 кв. 29
Адм.Головко д. 11 кв. 10
Адм.Головко д. 19 кв. 100
Адм.Головко д. 68 кв. 34
Адм.Головко д. 68 кв. 41
Адмірала Головко д. 13 кв. 4
Азізбекова д. 15 кв. 16
Азізбекова д. 16 кв. 2
Азовская д. 49
Азовська д. 12 кв. х
Азовська д. 49 кв. 3
Айвазовського б. 6 кв. Х
Академическая д. 21 кв. x
Академіка Сахарова д. 1 кв. 44
Акопяна д. 11 кв. -
Акопяна д. 9 кв. 2
б-р М.Василевского д. 32 кв. 35
б-р М.Василевского д. 8 кв. 23
б-р. М.Василевського д. 35 кв. 6
м-н Сонячний д. 9 кв. 25
м-н Юбилейный д. 12 кв. 104
м-н 4-й Заречный д. 29 кв. 138
м-н 4-й Заречный д. 8 кв. 56
Хостинская д. 24 кв. 0
ХХ партсъезда д. 1 кв. 35
ХХ го Партз`їзду д. 6 кв. 29
ХХ Партз`їзду д. 18 кв. 34
ХХ Партсъезда д. 1 кв. 27
ХХ партсъезда д. 10 кв. 32
ХХ Партсъезда д. 2 кв. 25
ХХІІ партз`їзду д. 45 кв. 74
ХХІІ П/з`їзду б. 20 кв. 28
ХХІІ П/з`їзду б. 38 кв. 71
ХХІІ П/з`їзду б. 8 кв. 39
ХХІІ П/з`їзду д. 12 кв. 73
ХХІІ П/з`їзду д. 57 кв. 12
ХХІІ п/з`їзду д. 8 кв. 72
ХХІІ П/съезда д. 38 кв. 52
ХХІІ П/съезда д. 8 кв. 16
4 м-р Зарічний д. 32 кв. 18
4-й Заречний м-н д. 15 кв. 45
4-й Заречный д. 10 кв. 49
4-й Заречный д. 20 кв. 45
4-й Заречный д. 20 кв. 96
40 років Жовтня б. 119
40 років Жовтня д. 99 кв. -
5 Горняцкий д. 50 кв. 123
5 Заречний д. 17 кв. 78
5 Заречний д. 87 кв. 52
5 Заречный д. 57 кв. 51
5 Заречный д. 85 кв. 219
5 Зарічний б. 70 кв. 80
Ну и тому подобное.
В Результате должно получится: Улица Дом Квартира отдельно к примеру елементах массива.

Заранее благодарен...
Возможно ли написать регулярное вырожения что бы оно обаработовало такие случаии написания адресса.
 

dimagolov

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

dareks

Новичок
Пока придумал такое правило, оно возвращает улицу с строки[SRC], но не ваегда ето правило срабоатыват
([\w\d]*)
[/SRC]
к Примеру :
Бухареська д. 32 кв. 31 --> Бухареська
Адм.Головко д. 11 кв. 10 --> Адм.Головко
Адм. Головко д. 60 кв. 29 --> Адм ---------------- Уже не правильно...
 

id9999i

Новичок
PHP:
<?
$str = "Бухареська д. 32 кв. 31
Доватора д. 24 кв. 18
Каткова д. 11 кв. 45
Чорногорська б. 48 кв. *";

preg_match_all ("#(.+)\s(?:д\.|б\.)\s(\d{1,3}\s)кв.\s(.+)#Ui", $str, $streets);
echo "<table><tr><td>Улица</td><td>Дом</td><td>Квартира</td></tr>";
for ($i = 0; $i < count ($streets[0]);) {
	echo '<tr bgcolor="#F4FAFF">
	<td>'.$streets[1][$i].'</td>
	<td>'.$streets[2][$i].'</td>
	<td>'.$streets[3][$i].'</td>
	</tr>';
	$i++;
	echo '<tr bgcolor="#FFFFFF">
	<td>'.$streets[1][$i].'</td>
	<td>'.$streets[2][$i].'</td>
	<td>'.$streets[3][$i].'</td>
	</tr>';
	$i++;
	}
?>
 

dimagolov

Новичок
id9999i, ну а теперь скорми своей регулярке "Каткова д. 11-Б кв. 45 " и "Каткова д. 11 корп. 2 кв. 45"...
так что иногда лучше жевать (с), тем более, что ответ был дан в 1-м же сообщении
 

movRAX

Новичок
'!^(.+)(?:д\.|б\.)(.+)кв\.(.+)$!m' - попробуй такой шаблон для preg_match_all();
 
Сверху