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

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

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

preg_match('~<img[^>]*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 '<hr />'; } 

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<br>$url<br>"; } 

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

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

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

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