Intereting Posts
Phpmailer с использованием smtp с Gmail не работает – время подключения Хеши SHA512 различаются по андроиду, php и javascript PHP-скрипт выполняется дважды, когда более 60 секунд Заголовок PHP перемещается вверх по одному каталогу? Linkedin разделяет URL-адреса / не анализирует открытый граф Ошибки обработки PHP-сессии php echo vs return, какой способ лучше? Закрытие в PHP … что, собственно, они и когда вам нужно их использовать? PHP передает и получает двумерный массив из формы Как получить идентификатор родительского продукта в пурпуре? codeigniter: почему это происходит, когда i echo base_url () в атрибуте href тега привязки, он повторяет два раза Как преобразовать двоичный код в десятичный без использования собственных функций PHP? Публикация строки JSON на страницу PHP Как реализовать функцию помнить меня? Как сохранить значение выбранного пользователем параметра из выпадающего списка выбора в базу данных mysql?

извлечь изображение src из текста?

У меня есть переменная $ content, содержащая текст и изображения в этой форме (неизвестное количество изображений):

text text text text <img src="path/to/image/1">text text text text <img src="path/to/image/2"> text text text text text text text text text text text text text text text text <img src="path/to/image/3"><img src="path/to/image/4">text text text text <img src="path/to/image/5"> 

Я хочу извлечь все изображения src и сохранить их в массиве с помощью php, например:

 array( [1]="path/to/image/1" [2]="path/to/image/2" [3]="path/to/image/3" [4]="path/to/image/4" [5]="path/to/image/5" . . . ) 

что это лучший способ сделать что-то подобное. Я уже пробовал функцию взорваться, но этот способ казался неэффективным.

  $dom = new domDocument; $dom->loadHTML($html); $dom->preserveWhiteSpace = false; $imgs = $dom->getElementsByTagName("img"); $links = array(); for($i = 0; $i < $imgs->length; $i++) { $links[] = $imgs->item($i)->getAttribute("src"); } 

Вот пример использования simplehtmldom :

 include("simple_html_dom.php"); $content = ' text text text text <img src="path/to/image/1">text text text text <img src="path/to/image/2"> text text text text text text text text text text text text text text text text <img src="path/to/image/3"><img src="path/to/image/4">text text text text <img src="path/to/image/5"> '; $html = str_get_html($content); $images = $html->find("img"); $links = array(); foreach($images as $image) { $links[] = $image->src; } print_r($links); в include("simple_html_dom.php"); $content = ' text text text text <img src="path/to/image/1">text text text text <img src="path/to/image/2"> text text text text text text text text text text text text text text text text <img src="path/to/image/3"><img src="path/to/image/4">text text text text <img src="path/to/image/5"> '; $html = str_get_html($content); $images = $html->find("img"); $links = array(); foreach($images as $image) { $links[] = $image->src; } print_r($links); 

Вывод:

 Array ( [0] => path/to/image/1 [1] => path/to/image/2 [2] => path/to/image/3 [3] => path/to/image/4 [4] => path/to/image/5 ) 

Использование регулярного выражения:

 <?php $str = ' text text text text <img src="path/to/image/1">text text text text <img src="path/to/image/2"> text text text text text text text text text text text text text text text text <img src="path/to/image/3"><img src="path/to/image/4">text text text text <img src="path/to/image/5">'; preg_match_all('@<img.*src="([^"]*)"[^>/]*/?>@Ui', $str, $out); print_r($out[1]); ?> 

Вывод:

 Array ( [0] => path/to/image/1 [1] => path/to/image/2 [2] => path/to/image/3 [3] => path/to/image/4 [4] => path/to/image/5 )