Parser определенных ссылок ?

Discussion in 'PHP' started by Adio, 30 Jun 2009.

  1. Adio

    Adio Elder - Старейшина

    Joined:
    23 May 2005
    Messages:
    1,646
    Likes Received:
    147
    Reputations:
    18
    Привет всем вот накопал парсер

    <?php

    $code = file_get_contents('http://site.com');
    preg_match_all('#href=[\'"]([^\'"]+)[\'"]#i', $code, $matches);
    echo '<pre>'.print_r($matches[1], true);
    ?>


    Он выдерает ссылки.

    Как мне сделать так что бы он выдерал определенные ссылки ? а не все подряд к пример ссылку типа

    <a href=example.com>HELLO WORLD</a>


    а все остальные ссылки не трогал ? реально ли такое ?
     
  2. wildshaman

    wildshaman Elder - Старейшина

    Joined:
    16 Apr 2008
    Messages:
    478
    Likes Received:
    483
    Reputations:
    99
    Определенные - это какие?
     
  3. XopoIII

    XopoIII Elder - Старейшина

    Joined:
    29 Oct 2007
    Messages:
    386
    Likes Received:
    30
    Reputations:
    0
    ставь условие и проверяй то что тебе нужно
     
  4. Adio

    Adio Elder - Старейшина

    Joined:
    23 May 2005
    Messages:
    1,646
    Likes Received:
    147
    Reputations:
    18
    Так я не шарю в этом вообще я на уровне пользователя PHP понимаю..

    Определенные это мне нужно пропарисить сайт или документ и вывести все
    ссылки

    <a href=example.com>HELLO WORLD</a>

    А лучше так ( Находим только ссылку Example.com удаляем ее и оставляем только HELLO WORLD..

    Можно так ? что бы находило определенную ссылку и выводило только слово HELLO WORLD без ссылки ?
     
  5. wildshaman

    wildshaman Elder - Старейшина

    Joined:
    16 Apr 2008
    Messages:
    478
    Likes Received:
    483
    Reputations:
    99
    PHP:
    <?php
    $site
    =file_get_contents('http://yandex.ru');
    preg_match_all('|<a href="(.*?)">(.*?)</a>|is'$site$out);
    print_r($out[2]);
    ?>
    tc
     
    1 person likes this.
  6. BrainDeaD

    BrainDeaD Elder - Старейшина

    Joined:
    9 Jun 2005
    Messages:
    774
    Likes Received:
    292
    Reputations:
    214
    preg_match_all('#href=example.com>(HELLO WORLD)#', $code, $matches);
    echo $matches[1];
     
    1 person likes this.
  7. !TNK!

    !TNK! Member

    Joined:
    13 Dec 2008
    Messages:
    50
    Likes Received:
    56
    Reputations:
    0
    можно в обычном блокноте сделать замену в исходнике
    <a href=example.com> на пусто или чтото другое
    после парсинга конешн
     
  8. BrainDeaD

    BrainDeaD Elder - Старейшина

    Joined:
    9 Jun 2005
    Messages:
    774
    Likes Received:
    292
    Reputations:
    214
    зачем? если так как я написал, он выдирает только текст.
     
  9. Adio

    Adio Elder - Старейшина

    Joined:
    23 May 2005
    Messages:
    1,646
    Likes Received:
    147
    Reputations:
    18
    А оно будет выдавать по разному ?? ибо там где HELLO WORLD идет вида

    HELLO WORLD1
    HELLO WORLD2
    WORLD HELLO4

    Wildshaman

    <?php
    $site=file_get_contents('http://yandex.ru');
    preg_match_all('|<a href="(.*?)">(.*?)</a>|is', $site, $out);
    print_r($out[2]);
    ?>

    Вырезает то что нужно...

    Мне нужно вот как отсеить

    <a href=example.com>Любой текст</a>

    Пропарсить только example.com ссылки и вывести только (Любой текст)
     
  10. BrainDeaD

    BrainDeaD Elder - Старейшина

    Joined:
    9 Jun 2005
    Messages:
    774
    Likes Received:
    292
    Reputations:
    214
    preg_match_all('#href=example.com>([a-zA-Z0-9_-]*)</a>#', $code, $matches);
     
    #10 BrainDeaD, 30 Jun 2009
    Last edited: 30 Jun 2009
  11. Adio

    Adio Elder - Старейшина

    Joined:
    23 May 2005
    Messages:
    1,646
    Likes Received:
    147
    Reputations:
    18
    Напишите полный код ! у меня не работает .т.е не чег оне выводит !!!

    <?php
    $code=file_get_contents('site.com');
    preg_match_all('#href=example.com>([a-zA-Z0-9_-]*)#', $code, $matches);
    echo $matches[1];
    ?>

    Не роботает.
     
  12. BrainDeaD

    BrainDeaD Elder - Старейшина

    Joined:
    9 Jun 2005
    Messages:
    774
    Likes Received:
    292
    Reputations:
    214
    да, я кое что забыл. испарвил предыдущий пост. попробуй ещё раз с исправленым

    или попробуй так. остальной код у тебя ок.
    preg_match_all('#href=example.com>(.*)#', $code, $matches);
     
    #12 BrainDeaD, 30 Jun 2009
    Last edited: 30 Jun 2009
  13. Adio

    Adio Elder - Старейшина

    Joined:
    23 May 2005
    Messages:
    1,646
    Likes Received:
    147
    Reputations:
    18
    <?php
    $code=file_get_contents('site.com');
    preg_match_all('#href=example.com>(.*)#', $code, $matches);
    echo $matches[1];
    ?>


    Выводит только Array
     
  14. BrainDeaD

    BrainDeaD Elder - Старейшина

    Joined:
    9 Jun 2005
    Messages:
    774
    Likes Received:
    292
    Reputations:
    214
    бля опять забыл закрыть тег (((
    preg_match_all('#href=example.com>(.*)</a>#', $code, $matches);

    а как с другим исправленным вариантом?
    preg_match_all('#href=example.com>([a-zA-Z0-9_-]*)</a>#', $code, $matches);
     
  15. wildshaman

    wildshaman Elder - Старейшина

    Joined:
    16 Apr 2008
    Messages:
    478
    Likes Received:
    483
    Reputations:
    99
    print_r($matches[1]);

    И воообще, напиши из чего что должно получаться.
     
  16. Adio

    Adio Elder - Старейшина

    Joined:
    23 May 2005
    Messages:
    1,646
    Likes Received:
    147
    Reputations:
    18
    <?php
    $code=file_get_contents('http://site.com');
    preg_match_all('#href=site.write.com>([a-zA-Z0-9_-]*)</a>#', $code, $matches);
    print_r($matches[1]);
    ?>

    Не Работает не знаш шо вы там мутите мне массив пустой вылетает !

    Может потому что сайт www.site.in.com две точки ? .in.com ?

    Есть определенные ссылки в странице <a href=www.site.in.com>QWERT</a>

    Мне нужно пропарисить только ссылки с именем www.site.in.com bи вывести только QWERTY (вместо QWERT может быть любой текст)
     
  17. BrainDeaD

    BrainDeaD Elder - Старейшина

    Joined:
    9 Jun 2005
    Messages:
    774
    Likes Received:
    292
    Reputations:
    214
    да всё понятно. мы ничего не мутим. или на сайте нет ссылок или они ни в тегах или ты неправильно адрес задаёш. дай реальный адрес сайта, я проверю. можно в личку
     
  18. Adio

    Adio Elder - Старейшина

    Joined:
    23 May 2005
    Messages:
    1,646
    Likes Received:
    147
    Reputations:
    18
    Я проверял на 3 сайтах де есть ссылки не работает проверь ты если у тя денвер стоит
     
  19. Adio

    Adio Elder - Старейшина

    Joined:
    23 May 2005
    Messages:
    1,646
    Likes Received:
    147
    Reputations:
    18
    Ну вот. ) в тупике все )))
     
  20. ghostwizard

    ghostwizard Member

    Joined:
    4 Dec 2005
    Messages:
    127
    Likes Received:
    36
    Reputations:
    21
    1. [a-zA-Z0-9_-]* с кириллицей не прокатит.
    2. Не забываем про кавычки при парсинге.
    3. Линки есть и c http://

    Вот так должно работать с выборкой по сайту

    PHP:
    preg_match_all('#href=[\'"](.*)mysite.com(.*)[\'"]#i'$code$matches); # любой линк вида mysite.com/blabla/i.html, http://mysite.com, mysite.com

    preg_match_all('#href=[\'"](.*)mysite.com[\'"]#i'$code$matches); # любой линк http://mysite.com или mysite.com