我正在使用DomDocument从其他网站上拉页面。
返回的页面有一些相同的链接。这些链接都具有相同的路径:https://example.com/team-registration/
我想要做的是覆盖这些链接,以便在返回页面时转到不同的路径:https://mobile.example.com/registration-team.php。
$url = "https://example.com/index.php";
$doc = new DomDocument('1.0', 'UTF-8');
$doc->loadHtml(file_get_contents($url));
$div = $doc->getElementById('upcoming_league_dates');
str_replace("<a href='https://example.com/team-registration/'", "<a href='https://mobile.example.com/registration-team.php'", $div);
echo $doc->saveHTML($div);
我尝试了str_replace但是它抛出了一个错误。
更新代码
根据@Ally Shairu的例子,这是更新的代码:
$url = "https://pugetsoundbasketball.com/index.php";
$doc = new DomDocument('1.0', 'UTF-8');
$doc->loadHtml(file_get_contents($url));
$div = $doc->getElementById('upcoming_league_dates');
$value = str_replace("<a href='https://example.com/team-registration/'", "<a href='https://mobile.example.com/registration-team.php'", $div->nodeValue);
$div->nodeValue = $value;
$html = $doc->saveHTML();
echo $html;
不幸的是,这只会拉动整个页面而不是“coming_league_dates”div。实际上,除了“coming_league_dates”div之外,它似乎显示该页面的所有内容。
当我尝试这个时它也失败了:
$ html = $ doc-&gt; saveHTML();
答案 0 :(得分:0)
str_replace函数返回修改后的字符串或数组。你没有在任何地方保存这个价值?我想这可能是问题,如果没有,请分享错误。
编辑: 由于您已经共享了错误,我认为您需要获取nodeValue,请尝试使用此$ div-&gt; nodeValue。如果您的HTML有效,这将有效。
var_dump($ div)看看你到底得到了什么。