Я пытаюсь вставить base
HTML-тег в iframe, который загружает удаленный URL.
<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;
Кадр правильно загружает все абсолютные ссылки, но при попытке загрузить относительную ссылку он ссылается на мой локальный сервер (локальный веб-сервер) @ 127.0.0.1
Ваш 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();
Других решений пока нет …