За последние 24 часа нас посетили 17636 программистов и 1655 роботов. Сейчас ищут 937 программистов ...

Извлечение значений html тегов img и href

Тема в разделе "Регулярные выражения", создана пользователем burunduk, 28 янв 2010.

  1. burunduk

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

    С нами с:
    28 янв 2010
    Сообщения:
    2
    Симпатии:
    0
    Здравствуйте!
    Прошу помощи!
    Как извлечь из html только ссылки и ссылки на картинки? Т.е. нужен только урл ссылки и урл картинки-ссылки.
    Есть хтмл файл большого размера с большим кол-ом ссылок на картинки в виде картинок, вроде:
    Код (Text):
    1. <a href="http://domen.com/imagedb/830/3.jpg">bla-bla<img src="http://domen.com/imagedb/125/3.jpg" width="150" height="150" border="0" alt=""></a>
    Додумался пока до такой конструкции (независимо от регистра ищем все, что находится между href и a> и содержит img)
    Код (Text):
    1. preg_match_all("/(?i)(href).{1,}(img).{1,}(a>)/", $str, $out);
    Получаю:
    Код (Text):
    1. href="http://domen.com/imagedb/830/3.jpg">bla-bla<img src="http://domen.com/imagedb/125/3.jpg" width="150" height="150" border="0" alt=""></a>
    Делаю еще один "прогон" (правильно ли я обозначил условие "или"? jpg|jpeg - тесты провожу на обрезанном файлике, где пока урлы только с jpg)
    Код (Text):
    1. preg_match_all("/(?i)(http).{1,}(jpg|jpeg)/", $out[0][$i], $out_s);
    Получаю
    Код (Text):
    1. http://domen.com/imagedb/830/3.jpg">bla-bla<img src="http://domen.com/imagedb/125/3.jpg
    Как извлечь из этой строки 2 урла?

    Форум по рег выражениям почитал, еще поэкспериментировал... Застопорился на извлечении строки от начала (http) и до конца (jpg). Думаю, что это универсальное условие для определения ссылки нужного формата.

    Условия такие:
    найти все строки вида <a href=url.jpg><img=url.jpeg></a> извлечь из них только урлы на jpeg и jpg в разные элементы массива.
    Может быть кто-нибудь поможет в написании выражения за один "присест" или разрешит мой посл вопрос насчёт извлечения 2 урлов из получившейся у меня строки?
     
  2. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Код (Text):
    1. "#<a[^>]+href=\"(.+?)\"[^>]*>.*?<img[^>]+src=\"(.+?)\"[^>]*>.*?<\/a>#is"
     
  3. burunduk

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

    С нами с:
    28 янв 2010
    Сообщения:
    2
    Симпатии:
    0
    Вот спасибо!