|
|
|
| Подскажите плиз как лучше решить следующую задачу:
есть файл 1.html
<html><body>
<OL class=results>
<LI><A class=title href="http://auto.vl.ru/" onclick="r(this, 'ctya')"
target=_blank>"Авто Владивосток" - продажа японских автомобилей</A><BR>База
объявлений о продаже подержанных машин. Каталог автомобилей и мотоциклов
(модель, год выпуска, цена). Стоимость и порядок услуг по помощи в
приобретении автомобиля и доставке.
<DIV class=url><SPAN style="COLOR: rgb(0,102,0)">auto.vl.ru</SPAN><SPAN
class=black> — Регион: <A
href="http://geo/Russia/East/Vladivostok/cat/Automobiles/Motorcicles/"
onclick="r(this,'ctya')">Владивосток</A></SPAN> </DIV>
<UL></UL>
<DIV class=more><A
href="http://search.ru/allfromres=421431&rpt=rs2">Все
подразделы</A> (4) </DIV>
<LI><A class=title href="http://www.moto.ru/" onclick="r(this, 'ctya')"
target=_blank>"Moto.ru" - виртуальный мото-клуб</A><BR>Конференции байкеров,
виртуальный магазин аксессуаров, мотоистории и мотоанекдоты. Бесплатная почта,
фотоальбом, материалы о водительских правах, марках мотоциклов, советы
механика.
<DIV class=url><SPAN style="COLOR: rgb(0,102,0)">www.moto.ru</SPAN><SPAN
class=black> — </SPAN></DIV>
<UL>
<LI><A href="http://shop.moto.ru/" onclick="r(this, 'ctya')"
target=_blank>"Moto.ru" - товары для мотоциклистов</A>
<LI><A href="http://members.moto.ru/ural" onclick="r(this, 'ctya')"
target=_blank>Мотоциклы "Урал"</A> </LI></UL>
<DIV class=more><A
href="http://allfromres=241150&rpt=rs2">Все
подразделы</A> (4) </DIV>
</LI></OL>
<BR></BODY></HTML>
|
Его нужно разобрать, чтобы получилось типа:
$url= http://auto.vl.ru/
$nazurl= "Авто Владивосток" - продажа японских автомобилей
$opis= База объявлений о продаже подержанных машин. Каталог автомобилей и мотоциклов (модель, год выпуска, цена). Стоимость и порядок услуг по помощи в
приобретении автомобиля и доставке.
$testurl= auto.vl.ru
И так из каждого блока LI
Помогите пожалуйста разобраться в этом вопросе. | |
|
|
|
|
|
|
|
для: Игорь_О
(03.04.2005 в 23:51)
| | Подскажите, хотя бы алгоритм, куда копать? | |
|
|
|
|
|
|
|
для: Игорь_О
(04.04.2005 в 07:54)
| | Эта задача решается при помощи регулярных выражений, в вашем случае подойдёт следующий скрипт
<?php
// Получаем файл
$buffer = file_get_contents("text.txt");
// Регулярное выражение
$pattern = "|<li><a[\s]+class=title[\s]+href=\"([^\"]+)\"[^>]+>([^<]+)<[^<]*[^>]+><br>([^<]+)<[^<]+[^>]+>([^<]+)<|iU";
// Проводим анализ
preg_match_all($pattern,$buffer,$out, PREG_SET_ORDER);
// Выводим полученные данные
print_r($out);
?>
|
HTML содержится в файле "text.txt", а результат в двумерном массиве $out - смотрите содержимое страницы или выводите его в файл, там 0 элемент содержит полное вхождение и нарушает просмотр. Список тем с решением схожих задач имеется в теме по ссылке
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=3110 | |
|
|
|
|
|
|
|
для: cheops
(04.04.2005 в 10:36)
| | Спасибо. Работает как надо.
Но еще проблема возникла:
База
объявлений о продаже подержанных машин. Каталог автомобилей и мотоциклов
(модель, год выпуска, цена). Стоимость и порядок услуг по помощи в
приобретении автомобиля и доставке.
|
Получаем вот такую строку. При записи в файл, она так и записывается с переводами строки. Как можно их убрать (перевод строки заменить на пробел, чтобы было в одну строку)?
По ссылкам сходил, вроде бы такого не встретил.
В регулярных выражениях я вобще никак. А видимо зря. | |
|
|
|
|
автор: cheops (из ННГУ) (04.04.2005 в 14:22) |
|
|
для: Игорь_О
(04.04.2005 в 13:56)
| | Здесь уже можно обойтись без регулярных выражений, заменив переводы \r\n на пустые строки, т.е. пропустить строку через str_replace
<?php
$text = str_replace("\r\n","",$text);
$text = str_replace("\n","",$text);
?>
|
| |
|
|
|
|
|
|
|
для: cheops (из ННГУ)
(04.04.2005 в 14:22)
| | Вот спасибо.
Сейчас совсем как мне и надо было. | |
|
|
|