Помогите с шаблоном для парсинга

Статус
В этой теме нельзя размещать новые ответы.

TIIIMOXAN

Гуру форума
Регистрация
1 Сен 2009
Сообщения
403
Реакции
74
Подскажите пожалуйста.Есть скрипт.
<?php
$pars = file_get_contents('http://mysite.ru');
$shab = '<td>(.*)<\/td>';
ereg ($shab,$pars, $mat);
echo '<p>'.$mat[0].'</p>';
?>
На сайте доноре,в шаблоне,между тегами (<td></td>),существуют 3 параграфа(<p>...</p> <p>...</p> <p>...</p>).
Как составить шаблон,чтобы выводился только 3-ий параграф и не выводилась картинка.И если не затруднит,ткните носом,где можно почитать как составлять шаблон,чтобы можно было менять настройки парсинга.
Заранее благодарен!
Пример:
<td>
<p class="price">не нужно выводить: <span>не нужно выводить.</span> <br /> не нужно выводить: <span>не нужно выводить.</span>
</p>
<p>не нужно выводить<br />не нужно выводить</p>
<p>А ЭТОТ ТЕКСТ НУЖНО ВЫВЕСТИ</p>
</td>
 
Если в лоб решать, то как-то так:
PHP:
<?php $pars = file_get_contents('http://www.example.com');
preg_match('#<td>.*<p.*?<p.*?<p>(.*)<\/p>.*<\/td>#s', $pars, $mat);
echo '<p>'.$mat[1].'</p>'; ?>
Где почитать - легко находится Для просмотра ссылки Войди или Зарегистрируйся. Успехофф!
 
как вариант

PHP:
if (preg_match("/<td>(.+?)<\/td>/i", $text, $result))
    if (preg_match_all ("/<p>([^<]+)/i", $result[1], $result1))
    for ($i=0; $i<3; $i++)
        $st = $result1[1][$i];
print $st;
 
gres_18 спасибо,код подошел.Забыл сказать,что настранице таких таблиц много,20 и больше.а выводит только одну.Как решить это вопрос.

diavolic,ваш скрипт пока не смотрел.
 
а выводит только одну.Как решить это вопрос.
Вместо preg_match нужно использовать preg_match_all, на выходе будет двумерный массив со всеми результатами.
 
Вместо preg_match нужно использовать preg_match_all, на выходе будет двумерный массив со всеми результатами.

пишет Array
 
Вот пример:
PHP:
<?php
$pars = file_get_contents('http://www.example.com');
preg_match_all('#<td>.*?<p.*?<p.*?<p>(.*?)<\/p>.*?<\/td>#s', $pars, $mat);
for ($i = 0; $i < count($mat[0]); $i++) {
      echo $mat[1][$i].'<br />'; }
?>
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху