Проблема с парсером

Тема в разделе "Как сделать...", создана пользователем penguen, 18 дек 2013.

  1. penguen

    penguen

    Регистр.:
    7 янв 2007
    Сообщения:
    821
    Симпатии:
    93
    Добрый день нужна помощь.
    Проблема - Пишу свой парсер. Возникли кое какие нюансы.

    Есть сайт

    хочу для начала хотя б название товара забрать между тегами
    <div class="bread_crumbs">*</div>
    Не получается, ругулярку такую пишу
    preg_match('|<div class="bread_crumbs">*</div>|',$html,$list);

    Естественно входящий $html есть код
     
  2. Stas-P

    Stas-P

    Регистр.:
    7 сен 2013
    Сообщения:
    165
    Симпатии:
    125
    Последнее редактирование: 18 дек 2013
  3. penguen

    penguen

    Регистр.:
    7 янв 2007
    Сообщения:
    821
    Симпатии:
    93
    Те же яйца только в профиль, регулярки все равно нужны для чистки от левого кода и т.д.
     
  4. ev-goo

    ev-goo Создатель

    Регистр.:
    28 май 2012
    Сообщения:
    10
    Симпатии:
    9
    Для начала не *, а (.*?)
    preg_match('|<div class="bread_crumbs">(.*?)</div>|',$html,$list);
    Затем можно вырезать ссылки примерно так
    preg_replace('#<a[^>]* href=[^>]*?>.*?</a>#', '\\1\\2\\3', $list['1']);
    и так далее..
     
    Последнее редактирование: 18 дек 2013
  5. lemurinesh

    lemurinesh Создатель

    Регистр.:
    4 дек 2013
    Сообщения:
    2
    Симпатии:
    0
    ТС: Если ещё актуально - можешь глянуть в сторону Zend_Dom_Query.
    Не знаю, как другим, а лично мне он нравится)


    PHP:
    $out = array();
    $results $dom->query('.bread_crumbus');
    foreach (
    $results as $result) {
        
    $out[] = $result->nodeValue;
    }
    Что-то подобное. Писал по памяти, потому могут быть не точности. Но смысл ясен.
     
  6. RastaMace

    RastaMace Писатель

    Регистр.:
    4 июл 2012
    Сообщения:
    0
    Симпатии:
    0