За последние 24 часа нас посетили 17345 программистов и 1295 роботов. Сейчас ищут 1658 программистов ...

Вытаскивание анкора!!!

Тема в разделе "Регулярные выражения", создана пользователем Panter7777, 1 июл 2011.

  1. Panter7777

    Panter7777 Активный пользователь

    С нами с:
    10 окт 2010
    Сообщения:
    96
    Симпатии:
    0
    Адрес:
    Киев
    Добрый день!

    Не как не могу добиться идеального шаблона.
    Цель вытащить анкор из ссылки.

    Еще объясню я вытягиваю контент сайта там может быть много ссылок но меня интересует только та в которой линк seetv.tv ну или любой заданный мною!!

    Есть сам линк - seetv.tv!
    А вот ссылки могут быть разными, что есть сейчас:

    Код (Text):
    1.  
    2. Ссылка: <a href="http://seetv.tv/" target="_blank">Онлайн ТВ</a>
    3.  
    4. preg_match('/<a\\s?href\=["\\']?.*?[http\:\/\/]?([w]{3})?\.?seetv\.tv\/?["\']?\s?(.*)?["\']?\>(.*)?<\/a\>[^(.*)?]?/', input, $match)
    5.  
    6. $match[3] - "Онлайн ТВ" //Все как надо
    7.  
    8.  
    9. Но если ссылка вида - <a href="http://seetv.tv/" target="_blank">Онлайн ТВ</a> - <a href=''>sdfsd</a>
    10.  
    11. то $match[3] - "sdfsd" //Тут лажа!!!!!!!!!!
    То есть я так понимаю у меня не получается именно сказать что дальше искать не нужно!!!
     
  2. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    фига се...

    а что должно быть?
     
  3. Panter7777

    Panter7777 Активный пользователь

    С нами с:
    10 окт 2010
    Сообщения:
    96
    Симпатии:
    0
    Адрес:
    Киев
    )))
    Код (Text):
    1. $match[3] - "Онлайн ТВ"
    //ВОТ ТАК НАДО!

    из любой ссылки как из
    Код (Text):
    1. <a href="http://seetv.tv/" target="_blank">Онлайн ТВ</a>
    такой так и из

    Код (Text):
    1. <a href="http://seetv.tv/" target="_blank">Онлайн ТВ</a> - <a href=''>sdfsd</a>
    такой
     
  4. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    Panter7777
    после регулярки поставь флаги sUi, должно помочь
     
  5. Panter7777

    Panter7777 Активный пользователь

    С нами с:
    10 окт 2010
    Сообщения:
    96
    Симпатии:
    0
    Адрес:
    Киев
    не помогло!!!
     
  6. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    PHP:
    1. <?php
    2.  
    3. $text = '<a href="http://seetv.tv/" target="_blank">Онлайн ТВ</a> - <a href=\'\'>sdfsd</a>';
    4.  
    5. preg_match_all('#<a\s+href="http://seetv\.tv/"[^>]*>(.*)</a>#sUi', $text, $matches);
    6.  
    7. echo '<pre>'.print_r($matches, true).'</pre>';
     
  7. Panter7777

    Panter7777 Активный пользователь

    С нами с:
    10 окт 2010
    Сообщения:
    96
    Симпатии:
    0
    Адрес:
    Киев
    Код (Text):
    1.  
    2. $data = "<a href='http://seetv.tv/' target='_blank'>Онлайн ТВ</a> -  <a href='blabla.com'>DDDDDDDDD</a> ";
    3.  
    4. preg_match_all('#<a\s+href="http://seetv\.tv/"[^>]*>(.*)</a>#sUi', $data, $ank);
    5.  
    6. print_r($ank, true);
    Результат :

    Код (Text):
    1. 11 Array ( [0] => Array ( ) [1] => Array ( ) )
    Вот как сейчас:
    Код (Text):
    1.  
    2. $data = "<a href='http://seetv.tv/' target='_blank'>Онлайн ТВ</a> -  <a href='blabla.com'>DDDDDDDDD</a> ";
    3.  
    4. preg_match('/<a\s?href\=["\']?.*?[http\:\/\/]?([w]{3})?\.?' . preg_quote($link, '/') . '\/?["\']?\s?(.*)?\>(.*)?<\/a\>/', $data, $ank);
    5.  
    6. print_r($ank, true);
    Результат:
    Код (Text):
    1.  
    2. Array ( [0] => Онлайн ТВ - DDDDDDDDD [1] => [2] => ttp://seetv.tv/' target='_blank'>Онлайн ТВ - DDDDDDDDD )
    Не знаю почему такой массив но $ank[3] - выводит DDDDDDDDD
     
  8. Panter7777

    Panter7777 Активный пользователь

    С нами с:
    10 окт 2010
    Сообщения:
    96
    Симпатии:
    0
    Адрес:
    Киев
    Ладно всем хороших выходных.
     
  9. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Блин, и откуда это пошло, использовать регулярки для вытаскивания ссылок... Прошлый век же...

    PHP:
    1. <?php
    2. $doc = new DOMDocument;
    3. @$doc->loadHTMLFile('http://www.yandex.ru/');
    4. $result = array();
    5. foreach($doc->getElementsByTagName('a') as $node) {
    6.     $result[] = array($node->getAttribute('href'), $node->nodeValue);
    7. }
    8.  
    9. /********************************/
    10. header('Content-type: text/plain');
    11. print_r($result);
    12. ?>
     
  10. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    Panter7777
    вах-вах, так тяжело регулярку поправить...
    preg_match_all('#<a\s+href=[\'"]http://seetv\.tv/[\'"][^>]*>(.*)</a>#sUi', $text, $matches);

    Vladson
    велкам бэк. давно ж тебя не было видно :)
     
  11. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Да я тут всегда, только писать негде, один хлам типа этого топика...
     
  12. Panter7777

    Panter7777 Активный пользователь

    С нами с:
    10 окт 2010
    Сообщения:
    96
    Симпатии:
    0
    Адрес:
    Киев
    Супер работает на ура!!! Посоветуй по какой книге учиться лучше?
     
  13. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Нет хороших книг. Сначала просто пойми что ты делаешь и зачем (это самое сложное, иногда уходят годы чтоб это понять) а потом уже книги будут не нужны.