Что я хочу сделать, это позволить пользователю ввести 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;
}
Так как я могу сделать эту работу, как я хочу?
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
}
Других решений пока нет …