Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Вытащить строку через регулярку


Автор: Цербер 29.8.2008, 08:39
Доброе время суток!
Проблема с регуляркой, нужно вытащить строку из страницы:
вот строка из страницы

Код

</td></tr><tr><td><b>Почтовый адрес: </b>111123, Москва, 2-я Владимирская, д. 5, под. 4</td></tr>

пишу регулярку что бы вытащить "111123, Москва, 2-я Владимирская, д. 5, под. 4" из строки, вроде правильно написал, я так думаю конечно, но не работает=(

Код

$pattern_on_adres = "|Почтовый адрес:\s*</b>\s*([А-Яа-я0-9\-\,\.]*)\s*</td>\s*</tr>|";

кодировка страницы windows-1251 ну и кодировку скрипта я тоже поставил такую же!

попробовал ещё такой вариант паттерна

Код

$pattern_on_adres = "|Почтовый адрес:\s*</b>\s*(.*)\s*</td>\s*</tr>|";

но в таком случае он захватывает лишний текст который следует за концом строки который указал.

Всем заранее спасибо.

З.Ы.
Если не трудно укажите на ошибку с разъяснением!
З.Ы.Ы. Ещё раз спасибо! 

Автор: americanets 29.8.2008, 09:10
Код

$str = '</td></tr><tr><td><b>Почтовый адрес: </b>111123, Москва, 2-я Владимирская, д. 5, под. 4</td></tr>';

preg_match('/Почтовый адрес:([ ]+)?<\/b>(.*)?<\/td>/', $str, $match);

var_dump($match);

Автор: Цербер 29.8.2008, 09:24
americanets
С отдельной строкой сработало, но вот эта строка малая часть, которая находится в сранице

Код

</td></tr><tr><td><b>Почтовый адрес: </b>111123, Москва, 2-я Владимирская, д. 5, под. 4</td></tr>


Я попробовал Ваш метод не со строкой а со всей страницей и результат тот же что и у меня=(

я открываю через fopen далее считываю через fread до конца всю страницу и весь текст странице присваиваю переменной content и попробовал вот так

Код

error_reporting(E_ALL);
$filename = '360.htm';
$handle = fopen($filename, "rb");
$size = filesize($filename);
$contents = '';
$contents .= fread($handle, $size);
preg_match('/Почтовый адрес:([ ]+)?<\/b>(.*)?<\/td>/', $contents, $match);
var_dump($match);
fclose($handle);


результат таков

Код

array(3) { [0]=> string(451) "Почтовый адрес: 109651, г.Москва, ул.Иловайская, д.3 стр.13Телефоны: +7 495 730-75-63Факс: +7 495 730-75-64E-mail: info (dog) td-sgl.ruСайт в Интернет: http://www.klzta.debryansk.ruОписание фирмы ООО Старлайт Торговая Компания: " [1]=> string(1) " " [2]=> string(426) "109651, г.Москва, ул.Иловайская, д.3 стр.13Телефоны: +7 495 730-75-63Факс: +7 495 730-75-64E-mail: info (dog) td-sgl.ruСайт в Интернет: http://www.klzta.debryansk.ruОписание фирмы ООО Старлайт Торговая Компания: " }


т.е. много ненужного текста почему захватывается, у меня аналогично было!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)