Помогите советом по скрипту

Фрукт
На сайте с 03.04.2007
Offline
126
594

Привлю запрос в php скрипте.

Уже вторые сутки пытаю понять почему не работает.

Есть на html страничке кусок кода:


<div id="news-id-7..3">
<div align="center"><!--TBegin--><a href="" onclick="return hs.expand(this)"><img ...></a><!--TEnd--></div></div><p></p>
</td>


Скрипт ищет его на страничке:


preg_match_all("|(<div id='news-id-(.+)'>.+</div>)|mi", $о1, $res);

Вся проблема в том, что поиск идет до первого div'a. Но это не есть айс.

Выход нашел - надо искать до "</td>

Но как только я ставлю код:


preg_match_all("|(<div id='news-id-(.+)'>.+</td>)|mi", $о1, $res);

Возникает ошибка.

Посоветуйте как грамотно организовать шаблон запроса.

------------------- green fruct has told
[Удален]
#1
Фрукт:
Уже вторые сутки пытаю понять почему не работает.

ИМХО, кавычки мешают. Нужно преобразовывать в \" (ну и остальные служ. символы тоже)

Слава Шевцов
На сайте с 23.07.2005
Offline
370
#2

$pos1 = strpos($res, "<div id='news-id-");

$pos2 = strpos($res, '</td>', $pos1);

Неизменность точки зрения неизменно порождает иллюзию понимания.
J
На сайте с 02.02.2009
Offline
53
#3

Если найти надо

<div id="news-id-7..3">

<div align="center"><!--TBegin--><a href="" onclick="return hs.expand(this)"><img ...></a><!--TEnd--></div></div><p></p>

</td>

в первом диве -

то "/news-id-\d\.\.\d/\"><div[^>]+>(.*)<\/div - как-то так

jumash добавил 23.04.2009 в 14:20

В общем уточните что вам именно надо найти)

Фрукт
На сайте с 03.04.2007
Offline
126
#4

Вот что надо найти:

От "<div id="news-id-773">"

До "</td>"

Причем между ними может много всякого разного html кода.

dmitcat
На сайте с 26.05.2005
Offline
123
#5

preg_match_all("!<div id=\'news-id-(.*?)\'>(.*?)</td>!si", $о1, $res);

$id=$o1[1][0];

$html=$o1[2][0];

вроде так...

Либо селяВи (http://www.puper.ru), либо селяВас (http://www.puper.ru)!!!
Фрукт
На сайте с 03.04.2007
Offline
126
#6

dmitcat Спасибо большое!

Поиск проходит успешно, но дальше идут косяки.

Дальше надо взять Id новости и заголовок.

Вот код.


preg_match_all("!<div id=\'news-id-(.*?)\'>(.*?)</td>!si", $m1, $qwe);
for ($wer=0;$wer<count($qwe[1]);$wer++)
{
//echo $wer;
if (preg_match("|<div id='news-id-(.+)'>.+</div>|mi",$qwe[1][$wer],$ert))
{
echo "<tr><td>Номер новости - ".$ert[1]."<br>\n";
$tyu = parse_url($nm);
$yui = "|".$ert[1]."-(.+).html|iU";
preg_match($yui,$m1,$uio);
$iop = "http://".$tyu["host"]."/".$uio[0];
echo "Ссылка на новость - ".$iop."<br>";
//echo $qwe[0][$wer]."<br>";
file_put_contents("log/".$ert[1].".html",$qwe[0][$wer]);

$opa = abc($iop);
preg_match_all("!<div id=\'news-id-(.*?)\'>(.*?)</td>!si", $opa, $pas);
for ($asd=0;$asd<count($pas[1]);$asd++)
{
preg_match("|<title>(.+)&raquo;.+</title>|iU",$opa,$rty);
file_put_contents("log/".$ert[1]."-full.html",$pas[0][$asd]);
echo "Заголовок новости! - ".$rty[1]."<br>";
}

Самое что интересное с

Шаблоном

|<div id='news-id-(.+)'>.+</div>|mi

Все функционирует ( но я говорил что он не подходит)

Что я не так делаю?

embo
На сайте с 05.12.2008
Offline
24
#7

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

Плавно двигаемся от сапы к статьям (http://miralinks.ru/users/registration/from:4223)
Фрукт
На сайте с 03.04.2007
Offline
126
#8

К сожалению я лишь взял данный код, чтобы подправить под свои нужны. Я не php программист, иначе бы не спрашивал :(

Самому пришлось разбираться во всем этом коде

dmitcat
На сайте с 26.05.2005
Offline
123
#9

что то кусок кода не совсем понятный - он не полный. не ясны назначения и содержания переменных ert, nm...

да и полный пример странички по которой поиск идет - не помешал бы...

+ указания, что данный скрипт должен найти и в каком виде

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий