3

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.

2
  • Check out this duplicate-like solution: stackoverflow.com/a/3195048/2609094 Commented Jul 28, 2013 at 17:13
  • 1
    hi thanks for the code...but I wanted to ask that how do I input text click here to open in new tab between the <a href="path_to_file.png"></a> Commented Jul 28, 2013 at 17:27

2 Answers 2

3

Use phpQuery, it's amazing. It's just like using jquery! :) https://code.google.com/p/phpquery/

Sign up to request clarification or add additional context in comments.

Comments

2

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>

Example

2 Comments

Hi thanks!I had completely forgotten javascript can be used too!
I would like to point to stackoverflow.com/questions/11381673/… for detecting mobile, and switch your tags based on this.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.