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

Получить ссылки

  • OnArs

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

    Spritz 7 мая 2009 г. 12:45

    Здравствуйте, уважаемые Пыховцы! :)

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

    Вот что мне нужно:
    Получить тело ссылки: <a href="URL" rel="">Anchor</a>
    Нужно вытянуть :

    • URL
    • Anchor
    • dofollow ссылка или нет


    Буду рад любым ответам, возможно кто-то встречал готовое решение, то что описано выше в этой ветке, по-моему мне не подходит… :nezn:
  • adw0rd

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

    Spritz 7 мая 2009 г. 12:58, спустя 12 минут 57 секунд

    preg_match('|href="(.*)"\srel="(.*)">(.*)</a>|is', $str, $p)


    Тут можешь потестить http://pyha.ru/fishki/regexp/
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • Lirck

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

    Spritz 7 мая 2009 г. 13:04, спустя 6 минут 16 секунд

    |href="(.*)"\srel="(.*)">(.*)</a>|isU
  • adw0rd

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

    Spritz 7 мая 2009 г. 13:08, спустя 3 минуты 4 секунды

    aivee, U тут зачем?
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • Lirck

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

    Spritz 7 мая 2009 г. 13:17, спустя 9 минут 5 секунд

    если несколько ссылок идет подряд
  • OnArs

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

    Spritz 7 мая 2009 г. 13:18, спустя 1 минуту 10 секунд

    Большое спасибо за Ваши ответы!

    Но что если:

    • Вместо двойных ковычек используются одинарные или совсем ничего не используется? Я хочу сказать что бывают ссылки 3 типов:
      <a href="http://site.ru/"><a>
      <a href='http://site.ru/'><a>
      <a href=http://site.ru/><a>


    • rel="" и href="" поменяются местами или в теле ссылки есть другие теги? Пример:
      <a href="http://site.ru/" rel="nofollow"><a>
      <a rel="nofollow" href="http://site.ru/"><a>
      <a rel="nofollow" id="ya23" href="http://site.ru/"><a>
      <a rel="nofollow" id="ya23" href="http://site.ru/" style="font: bold;"><a>
      <a rel="nofollow" id="ya23" class="olink" href="http://site.ru/" style="font: bold;"><a>


    • Кроме того и rel="" может и не быть
    • . С релом мне главное в конце получить -> ссылка dofollow или nofollow.
  • adw0rd

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

    Spritz 7 мая 2009 г. 13:28, спустя 10 минут 41 секунду

    Вместо двойных ковычек используются одинарные или совсем ничего не используется? Я хочу сказать что бывают ссылки 3 типов:

    |href=["|']?(.*)["|']?\srel=["|']?(.*)["|']?>(.*)</a>|is[/code] Может типа того? Не проверял…

    [quote]rel="" и href="" поменяются местами или в теле ссылки есть другие теги? Пример:[/quote]
    Ну тогда поиграйся с if в регулярке
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • phpdude

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

    Spritz 11 мая 2009 г. 9:29, спустя 3 дня 20 часов

    дети дети … :))) дети .. ))):))
    Сапожник без сапог
  • Trej Gun

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

    Spritz 11 мая 2009 г. 13:04, спустя 3 часа 34 минуты 31 секунду

    (.*)

    жадным быть не хорошо
    [^"]+

    [code]["|'][/code]
    это бред
    надо либо ['"] либо ("|')

    [code]\srel=["|']?(.*)["|']?[/code]
    наверное так
    [code](?:\s+rel="([^"]+)")?
  • Trej Gun

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

    Spritz 11 мая 2009 г. 13:10, спустя 5 минут 52 секунды

    rel="" и href=""

    $parts = explode(" ",$str);
    foreach ($parts as $k => $v)
    if (strpos("href",$v)===0)
    $href = substr($v,5,strlen($v));
    elseif (strpos("rel",$v)===0)
    $rel = substr($v,4,strlen($v));


  • phpdude

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

    Spritz 11 мая 2009 г. 14:09, спустя 59 минут 36 секунд

    CTAPbIu_MABP, попробелу плохо, там может быть нечто onmouseclick или тп и хз чо получится в конце концов
    Сапожник без сапог

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