Intereting Posts
Есть ли способ обнаружить начало загрузки в JavaScript? Предотrotation пустых страниц и отображаемых данных в таблице Как resize логотипа navbar при прокрутке вниз OkHttp, Android – загрузить html-страницу и отобразить это содержимое в представлении jQuery Несколько форм Отправить Все модальности показывают один и тот же контент при нажатии кнопки Какое событие jQuery вызывается сразу после $ (document) .ready ()? onMouseMove не запускает элемент в Chrome Пытаясь использовать Beautiful Soup (Python), чтобы найти 2 частичных совпадения в значении атрибута Откройте файл .html с браузером по умолчанию, используя Bash на Mac Вывод php многомерного массива в список html размер шрифта для лучшей практики для мобильных устройств JavaScript – onClick, чтобы получить идентификатор нажатой кнопки Как я могу сделать красивую матрицу кнопок с бутстрапом 3? Есть ли какая-либо польза от добавления accept-charset = “UTF-8” в HTML-формы, если страница уже находится в UTF-8?

Получить все URL-адреса изображений из строки

Возможный дубликат:
Как извлечь img src, title и alt из html с помощью php?

Здравствуй,
Я нашел решение для получения первого изображения из строки:

preg_match('~]*src\s?=\s?[\'"]([^\'"]*)~i',$string, $matches); 

Но я не могу получить все изображения из строки.
Еще одна вещь … Если изображение содержит альтернативный текст (атрибут alt ), как его получить и сохранить в другую переменную?
Заранее спасибо,
Ilija

    Не делайте этого с помощью регулярных выражений. Вместо этого проанализируйте HTML. Взгляните на Parse HTML с PHP и DOM . Это стандартная функция в PHP 5.2.x (и, вероятно, ранее). В принципе логика получения изображений примерно равна:

     $dom = new domDocument; $dom->loadHTML($html); $dom->preserveWhiteSpace = false; $images = $dom->getElementsByTagName('img'); foreach ($images as $image) { echo $image->getAttribute('src'); } 

    Это должно быть тривиально адаптироваться к поиску изображений.

    Это то, что я пробовал, но не могу получить его значение print src

      $dom = new domDocument; /*** load the html into the object ***/ $dom->loadHTML($html); /*** discard white space ***/ $dom->preserveWhiteSpace = false; /*** the table by its tag name ***/ $images = $dom->getElementsByTagName('img'); /*** loop over the table rows ***/ foreach ($images as $img) { /*** get each column by tag name ***/ $url = $img->getElementsByTagName('src'); /*** echo the values ***/ echo $url->nodeValue; echo '
    '; }

    EDIT: Я решил эту проблему

     $dom = new domDocument; /*** load the html into the object ***/ $dom->loadHTML($string); /*** discard white space ***/ $dom->preserveWhiteSpace = false; $images = $dom->getElementsByTagName('img'); foreach($images as $img) { $url = $img->getAttribute('src'); $alt = $img->getAttribute('alt'); echo "Title: $alt
    $url
    "; }

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

    Вам будет лучше использовать class DOMDocument .

    Вы предполагаете, что вы можете анализировать HTML с помощью регулярных выражений. Это может работать на некоторых сайтах, но не на всех сайтах. Поскольку вы ограничиваете себя только подмножеством всех веб-страниц, было бы интересно узнать, как вы ограничиваете себя … возможно, вы можете анализировать HTML довольно легко с php.

    Посмотрите на preg_match_all, чтобы получить все совпадения.