【发布时间】:2018-10-21 19:34:55
【问题描述】:
我想将 HTML 变量中的所有链接更改为随机链接。这是我的代码,但有些东西阻止了链接被更改:
<?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;
【问题讨论】:
-
您知道,当您
echo $jobTemplateDetails;时,您只显示第一个输入,而不显示您之后可能通过代码更改的内容? -
你应该使用
echo $allLinks->saveHTML()来显示更新 -
@Jeff 谢谢!那么如何保存对变量的更改?
-
@Mohammad Dear Mohammad,它会产生如下错误:
Uncaught Error: Call to undefined method DOMNodeList::saveHTML()