我需要获取远程页面,修改一些元素(使用'PHP Simple HTML DOM Parser'库)并输出修改后的内容。PHP - 完整显示远程页面的内容
远程页面在源代码中没有完整的URL时出现问题,因此CSS元素和图像未加载。当然,它不会阻止我修改元素,但输出看起来很糟糕。
例如,打开https://www.raspberrypi.org/downloads/
但是,如果使用代码
$html = file_get_html('http://www.raspberrypi.org/downloads');
echo $html;
它会看起来很糟糕。我试图申请一个简单的黑客,但可以帮助一点点:
$html = file_get_html('http://www.raspberrypi.org/downloads');
$html=str_ireplace("</head>", "<base href='http://www.raspberrypi.org'></head>", $html);
echo $html;
有什么办法来“指示”脚本来分析从“http://www.raspberrypi.org” $ HTML变量的所有链接?换句话说,如何让raspberrypi.org成为获取的所有图像/ CSS元素的“主要”来源?
我不知道如何更好地解释它,但我相信你有一个想法。
是的,它看起来像一个可行的解决方案(这将需要一些额外的编码) - 寻找每一个“无效”链接不包含远程域的里面,添加域并输出内容 –
感谢您的努力,现在看来它是唯一的解决方案。当然,我需要稍微修改代码(只将前缀添加到没有域URL的链接,因为代码将用于解析许多不同的页面),但很可能这将是公认的答案(除非有人甚至有人提供了一些更容易的想法):) :) –
是的,你可以检查如果href包含域。对于图像,我建议遍历body元素并检查整个元素的字符串值是否包含图像扩展名(如'.gif','.png')。然后你可以编辑当前元素的图像url或src,不管它是什么。 –