将HTML <base />插入iframe

时间:2017-11-11 10:15:39

标签: php javascript-objects

我正在尝试将base HTML标记插入到加载远程网址的iframe中。

<iframe name="frame" id="frame" src="proxy.php" width="550" height="150"></iframe>

Proxy.php的内容在

之下
$url = 'https://theurl.com/buyflow/buyflow-localization.html'; 
$probe = file_get_contents($url);
echo $probe;

框架正确加载所有绝对链接,但在尝试加载相对链接时,它引用我的localhost(本地Web服务器)@ 127.0.0.1

1 个答案:

答案 0 :(得分:0)

您的base应位于head元素内。一种可能的解决方案是使用DOMDocument类来操作文档。像这样:

$dirUrl = 'https://theurl.com/buyflow/';
$url = $dirUrl . 'buyflow-localization.html';
$probe = file_get_contents($url);

$doc = new DOMDocument();
$doc->loadHTML($probe);

$head = $doc->getElementsByTagName('head')[0]; // try also ->item(0) instead of [0]
$bases = $head->getElementsByTagName('base');
if(count($bases) == 0) {
    $base = $doc->createElement('base');
    $head->appendChild($base);
} else
    $base = $bases[0]; // same here
$base->setAttribute('href', $dirUrl);

echo $doc->saveHTML();