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.
6 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
}
- 10,717
- 2
- 37
- 44
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.
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.
- 2,719
- 5
- 29
- 41
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;
- 21,457
- 6
- 48
- 75
-
Thanks a lot eveyone for the code, it works just fine. Nw I knw DomDocument can do magic :) – Aditya Sep 02 '10 at 19:52
I think one of the simplest ways you could do this would be through a regular expression. Load the HTML via the DOMDocument object as mentioned but create a expression - apparently PHP has 3 different methods to do this. I've also written a short post on regular expressions which may help you get a foothold on the subject. They're extremely useful in situations such as this.
- 29,632
- 26
- 117
- 199