Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHP code to traverse through a HTML file to find all the images in there?

Tags:

php

I wanted a php script to fetch all the images in HTML code and list it. Can anyone help me do this, or some Idea as to how I should proceed ? I am new to this, so any help would be appreciated.

like image 779
Aditya Avatar asked Sep 02 '10 19:09

Aditya


4 Answers

you can use DOMDocument, or simplehtmldom. here is a DOMDocument example:

$dom = new DOMDocument();
$dom->loadHtml($yourHtmlAsAString);
foreach ($dom->getElementsByTagName('img') as $img) {
    echo $img->getAttribute('src').'<br>'; // or whatever you need
}
like image 78
Sergey Eremin Avatar answered Nov 12 '22 13:11

Sergey Eremin


Run the HTML code through one of the many HTML parser libraries and then query for the src attribute value on all the img elements.

like image 36
hao Avatar answered Nov 12 '22 12:11

hao


Tried looking at DOMDocument in PHP? http://php.net/manual/en/domdocument.getelementsbytagname.php

Good example from that page:

$dom = new DomDocument();
$dom->prevservWhiteSpace = false;

$dom->loadHTML($htmlString);

$imageList = $dom->getElementsByTagName('img');
$imageCnt  = $imageList->length;

for ($idx = 0; $idx < $imageCnt; $idx++) {
    print $imageList->item($idx)->nodeValue . "\n";
}

Should give you the basics you need.

*Disclaimer, example is slightly modified from the comment I yanked it from but this is pretty straight forward stuff.

like image 3
CogitoErgoSum Avatar answered Nov 12 '22 12:11

CogitoErgoSum


If you want to load it from an actual php/html file...

$dom = new DomDocument();

if (!@$dom->load('img.php')) {
    echo 'url does not exist';
    return;
}

$imgs = $dom->getElementsByTagName('img');

for ($buffer = ''; $i = 0, $len = $imgs->length; $i < $len; $i++)
{
  $buffer .= 'image ' . $i . ' is: ' . $imgs->item($i)->getAttribute('src') . '<br/>';
}

echo $buffer;
like image 2
Gary Green Avatar answered Nov 12 '22 11:11

Gary Green