简体   繁体   中英

Change 'href' value of a link using PHP and DOM

I would like to change all links in an HTML variable to random ones. Here is my code but something prevents links from being changed:

<?php
$jobTemplateDetails = '<a href="https://www2.google.com">Click!</a>
<a href="https://www3.google.com">Click!</a>';
////////////////////// CHANGE ALL LINKS
$linkDom = new DOMDocument;

@$linkDom->loadHTML($jobTemplateDetails);

$allLinks = $linkDom->getElementsByTagName('a');

foreach ($allLinks as $rawLink) {

    $longLink = $rawLink->getAttribute('href');
        $str = 'abcdefghijklmnopqrstuvwxyz';
        $randomChar1 = $str[mt_rand(0, strlen($str)-1)];
        $randomChar2 = $str[mt_rand(0, strlen($str)-1)];
        $randomChar3 = $str[mt_rand(0, strlen($str)-1)];
        $randomChar4 = $str[mt_rand(0, strlen($str)-1)];
        $shortURL = mt_rand(1, 9).$randomChar1.mt_rand(1, 9).$randomChar2.$randomChar3.$randomChar4;
        $rawLink->setAttribute('href', $shortURL);
}
echo $jobTemplateDetails;

When you echo $jobTemplateDetails; you only show the very first input string, not the DomDocument you manipulate.
Change that to

echo $linkDom->saveHTML();

///OUTPUT:
<a href="7y2rpn">Click!</a>
<a href="3b5qtr">Click!</a>

a fiddle: https://3v4l.org/KuCic
and the docs

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM