Я пытаюсь заменить в файле содержимое тега body другим содержимым.
Сначала я запрашиваю удаленный файл:
$result = file_get_contents('URL');
$arr = json_decode($result, true);
$html = $arr["result"]["html"];
Затем вытаскиваю из него содержимое тега body в переменную
$noBody$d = new DOMDocument;
$mock = new DOMDocument;
$d->loadHTML($h);
$body = $d->getElementsByTagName('body')->item(0);
foreach ($body->childNodes as $child){
$mock->appendChild($mock->importNode($child, true));
}
$noBody = $mock->saveHTML();
Далее добавляю к нему в начало и в конец шапку с футером.
$data = $header.$noBody.$footer;
Затем создаю файл и пишу в него весь
$html из запроса.
Это нужно чтобы на итоговой странице осталось содержимое тега
head$file = "./test.php";
file_put_contents($file, $html);
С тем что описал выше все ок.
Затем пытаюсь заменить содержимое body тем, что в переменной
$dataНо этот код не работает.$filename = './test.php';
$fileNew = file_get_contents($filename);
$title_pattern='#<body>(.*)?</body>#s';
$test= preg_replace($title_pattern, $data, $fileNew);
file_put_contents($filename, $test, FILE_USE_INCLUDE_PATH);
Выводится только
$data, без
$header и
$footer
Если например проверить содержимое переменной $data и записать его в файл, то и
$header и
$data и
$footer вставляются как надо.
$file = "./test.php";
file_put_contents($file, $data);
Но в таком случае JS и стили с удаленого хоста естественно не подгружаются, ибо нет тега head. Поэтому я сначала вставляю весь удаленный исходник и затем пытаюсь заменить в нем body.
Это наверное извращение, но другого способа невижу.
Если коротко, мне нужно подключить удаленый лендинг и вставить в него свои шапки и футер и разместить у себя на хосте.