ФорумПрограммированиеPHP для идиотов → Парсинг ссылок

Парсинг ссылок

  • SeRebro

    Сообщения: 115 Репутация: N Группа: Кто попало

    Spritz 18 ноября 2009 г. 3:24

    подскажите регулярку, которая бы выводила все ссылки со страницы в виде
    http://site.ru/catogory
    http://example.com/main.html
    и т.д.
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 18 ноября 2009 г. 3:40, спустя 15 минут 46 секунд

    уже обсуждалось несколько раз на форуме…
    Спустя 147 сек.
    Что-то типа того:

    preg_match_all('/href\s*=\s*("|')?(?<link>.*?)("|')?/is', $html, $matches);


    В [link] будут ссылки
    adw/0
  • SeRebro

    Сообщения: 115 Репутация: N Группа: Кто попало

    Spritz 18 ноября 2009 г. 4:19, спустя 39 минут 5 секунд

    если так
    <?php
    $url = "http://www.dmoz.org/Business/Arts_and_Entertainment/Media_Production/Resumes_and_Portfolios/";
    $body = file_get_contents($url);
    preg_match_all('/href\s*=\s*("|')?(?<link>.*?)("|')?/is', $body, $out);
    print_r($out);
    ?>

    , то чистый лист. если так
    <?php
    $url = "http://www.dmoz.org/Business/Arts_and_Entertainment/Media_Production/Resumes_and_Portfolios/";
    $body = file_get_contents($url);
    preg_match_all('/href\s*=\s*("|")?(?<link>.*?)("|")?/is', $body, $out);
    print_r($out);
    ?>

    то пустой массив
    получается
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz 18 ноября 2009 г. 4:27, спустя 8 минут 16 секунд

  • SeRebro

    Сообщения: 115 Репутация: N Группа: Кто попало

    Spritz 18 ноября 2009 г. 4:36, спустя 9 минут 15 секунд

    NRG, этот топик я читал. уже научился составлять регулярки для текста. но как сделать чтобы парсил не текст а именно URL?
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 18 ноября 2009 г. 4:38, спустя 2 минуты 6 секунд

    SeRebro, вывод ошибок включите для начала
    adw/0
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 18 ноября 2009 г. 4:41, спустя 2 минуты 35 секунд


    NRG, этот топик я читал. уже научился составлять регулярки для текста. но как сделать чтобы парсил не текст а именно URL?
    легко :)

    15 баксов :)
    Сапожник без сапог
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 18 ноября 2009 г. 4:44, спустя 3 минуты 17 секунд

    <?php
    $url = "http://www.dmoz.org/Business/Arts_and_Entertainment/Media_Production/Resumes_and_Portfolios/";
    $body = file_get_contents($url);
    preg_match_all('/href="(.*?)"/is', $body, $out, PREG_SET_ORDER);
    print_r($out);
    ?>
    вот вам простой
    Спустя 176 сек.

    <?php
    $url = "http://www.dmoz.org/Business/Arts_and_Entertainment/Media_Production/Resumes_and_Portfolios/";
    $body = file_get_contents($url);
    preg_match_all('/href\s*=\s*("|\')?(?<link>[^"\']*)("|\')?/is', $body, $out, PREG_SET_ORDER);
    print_r($out);
    ?>

    этот поинтереснее
    adw/0
  • SeRebro

    Сообщения: 115 Репутация: N Группа: Кто попало

    Spritz 18 ноября 2009 г. 4:51, спустя 6 минут 36 секунд

    adw0rd, спасибо. а можно сделать так, чтоб парсило только внешние ссылки. т.е. не
    /category/
    а
    http://google.com/ к примеру
    вообщем которые с http начинаются
    Спустя 45 сек.
    а второй вариант не работает :о(
  • Troy

    Сообщения: 2532 Репутация: N Группа: Джедаи

    Spritz 18 ноября 2009 г. 4:52, спустя 49 секунд

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

    Сообщения: 115 Репутация: N Группа: Кто попало

    Spritz 18 ноября 2009 г. 4:53, спустя 1 минуту 21 секунду

    ну так подскажите. мне для скрипта нужны только ссылки. в мануалах ничё про это нету
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 18 ноября 2009 г. 4:55, спустя 2 минуты 12 секунд


    adw0rd, спасибо. а можно сделать так, чтоб парсило только внешние ссылки. т.е. не
    /category/
    а
    http://google.com/ к примеру
    вообщем которые с http начинаются

    можно, '/href="http:\/\/(.*?)"/is'
    а второй вариант не работает :о(

    Какая версия PHP?
    Спустя 100 сек.

    ну так подскажите. мне для скрипта нужны только ссылки. в мануалах ничё про это нету
    причем тут мануал, какая разница ссылки это или что-то другое, тут главное понять что такое рег. выражения, попрактиковаться и тогда все получится!
    а искать ответ "Как же обрабатываются ссылки?" - это не правильно
    adw/0
  • SeRebro

    Сообщения: 115 Репутация: N Группа: Кто попало

    Spritz 18 ноября 2009 г. 5:01, спустя 6 минут 14 секунд

    о, с '/href="http:\/\/(.*?)"/is' всё как надо
    сенкь ю вери мач
    Спустя 292 сек.
    бля, начал через форич выводить
    <?php
    $url = "http://www.dmoz.org/Business/Arts_and_Entertainment/Media_Production/Resumes_and_Portfolios/";
    $body = file_get_contents($url);
    preg_match_all('/href="http:\/\/www\.(.*?)"/is', $body, $out, PREG_SET_ORDER);
    foreach($out as $h)
    {
    echo $h;
    }
    ?>

    вот что получилось
    ArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArray

    ошибки вроде нету
    чё за ерунда?
  • welder

    Сообщения: 2945 Репутация: N Группа: в ухо

    Spritz 18 ноября 2009 г. 5:14, спустя 12 минут 47 секунд

    БЛЯТЬ
  • SeRebro

    Сообщения: 115 Репутация: N Группа: Кто попало

    Spritz 18 ноября 2009 г. 5:18, спустя 3 минуты 31 секунду

    вроде разобрался. только терь такое получилось
    href="http://www.michaelbolanos.com/" michaelbolanos.com/
    href="http://www.craigburnett.com" craigburnett.com
    href="http://www.martindenning.com/" martindenning.com/
    href="http://www.antaressfelken.com/" antaressfelken.com/
    href="http://www.thejohnfleming.com" thejohnfleming.com

Пожалуйста, авторизуйтесь, чтобы написать комментарий!