получить весь источник изображения с веб-сайта в Stack Overflow

Что я хочу сделать, это позволить пользователю ввести URL-адрес, который имеет изображения, такие как https://www.flickr.com/search/?text=arushad%20ahmed , и получите весь источник изображения в атрибуте ‘src’ и отобразите его.

Следующий подход не сработал:

$file = fopen("https://www.flickr.com/search/?text=arushad%20ahmed", "r");
$doc = new DOMDocument();
$doc->loadHTML($file);
$image = $doc->getElementsByTagName('img');

foreach ($image as $img) {
echo $img;
}

Так как я могу сделать эту работу, как я хочу?

0

Решение

src не является tag, это attribute,
Вы сказали, что вы новичок в php, так что это нормально, теперь беспокоитесь, используйте этот код:

$doc = new DOMDocument();
$doc->loadHTMLFile("https://www.flickr.com/search/?text=arushad%20ahmed");
$xpath = new DOMXpath($doc);
$imgs = $xpath->query("//img");
for ($i=0; $i < $imgs->length; $i++) {
$img = $imgs->item($i);
$src = $img->getAttribute("src");
// do something with $src
}

Узнать больше о PHP DOMDocument


Судя по вашему комментарию, у вас, похоже, нет поддержки PHP DOMDocument, вы можете использовать приведенные ниже команды для его установки.

sudo yum --enablerepo=webtatic install php-xml
sudo /sbin/service httpd stop
sudo /sbin/service httpd start

Кроме того, страница, которую вы пытаетесь проанализировать, не содержит действительный HTML, используйте HTML Tidy исправить это, т.е.

$html = file_get_contents('https://www.flickr.com/search/?text=arushad%20ahmed');
$config = array(
'clean' => 'yes',
'output-html' => 'yes',
);
$tidy = tidy_parse_string($html, $config, 'utf8');
$tidy->cleanRepair();
$doc = new DOMDocument();
$doc->loadHTML($tidy);
//the rest of the code is the same
$xpath = new DOMXpath($doc);
$imgs = $xpath->query("//img");
for ($i=0; $i < $imgs->length; $i++) {
$img = $imgs->item($i);
$src = $img->getAttribute("src");
// do something with $src
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]