Reputation: 192
I have image tag <img src="path_to_file.png">
but I want that the image tag be converted to link in mobile site.
So I want img to be converted to an href:
<a href="path_to_file.png" target="_blank">Click here to open in new tab</a>
I am getting started with php dom. I could get all the attribute listed.
$newdocument = new DOMDocument();
$newdocument->loadHTML();
$getimagetag = $doc->getElementsByTagName('img');
foreach($getimagetag as $tag) {
echo $src=$tag->getAttribute('src');
}
But how do we get the src attribute , then remove the img tag completely because it contains other parameter like height and length and then create new tag of link?
Hi guys I could get it done from php dom using following code
$input="<img src='path_to_file.png' height='50'>";
$doc = new DOMDocument();
$doc->loadHTML($input);
$imageTags = $doc->getElementsByTagName('img');
foreach($imageTags as $tag) {
$src=$tag->getAttribute('src');
$a=$doc->createElement('a','click here to open in new tab');
$a->setAttribute('href',$src);
$a->setAttribute('style','color:red;');
$tag->parentNode->replaceChild($a,$tag);
}
$input=$doc->saveHTML();
echo $input;
The create element can also be used to put text between <a></a>
ie Click...new tab.
replacechild is used to remove $tag i.e. img
and replace it with a
tag.
By setting attribute, we can add other parameters like style,target etc.
I used php dom in the end because I only wanted the data that I get from mysql to be converted and not the other elements like logo of website. Ofcourse it can be possible using javascript too.
Thanks
@dave chen for javascript way and pointing to detecting mobile link.
@nate for pointing me to a answer.
Upvotes: 3
Views: 1604
Reputation: 10975
I would recommend doing this with JavaScript:
<!DOCTYPE html>
<html>
<head>
<title>Images Test</title>
<script>
window.onload = changeImages;
function changeImages() {
var images = document.getElementsByTagName("img");
while (images.length > 0) {
var imageLink = document.createElement("a");
imageLink.href = images[0].src;
imageLink.innerHTML = "Click here to view " + images[0].title;
images[0].parentNode.replaceChild(imageLink, images[0]);
}
}
</script>
</head>
<body>
Here is a image of flowers : <img src="images/flowers.bmp" title="Flowers" ><br>
Here is a image of lakes : <img src="images/lakes.bmp" title="Lakes" ><br>
Here is a image of computers: <img src="images/computers.bmp" title="Computers"><br>
</body>
</html>
Upvotes: 2
Reputation: 1911
Use phpQuery, it's amazing. It's just like using jquery! :) https://code.google.com/p/phpquery/
Upvotes: 3