Вставить узел внутрь другого узла - PHP - PullRequest
0 голосов
/ 14 июля 2020

Я пытаюсь вставить код html в другой код html, используя DOMNode. Чтобы уточнить, у меня есть этот html в файле php, который содержит base_structure:

<!DOCTYPE html>
<html <?php echo "lang=\"".get_lang_code_map()[$_SESSION["language_id"]]."\""; ?>>
</html>

И у меня есть другой файл, который также содержит html content:

<head>
    <meta charset="utf-8"/>
    <title>Stack Overflow</title>
</head>

Хорошо, имея это в виду, это функция, которую я создаю, чтобы получить то, что я ищу, но безуспешно:

function view_new_design($view_name,$data=""){

  $open_structure = "app/views/open_structure.php";
  $header = "app/views/header3.php";
  $navbar = "app/views/navbar.php";
  $path = "app/views/".$view_name.".php";
  $footer = "app/views/footer2.php";
  $close_structure = "app/views/close_structure.php";
  ob_start();
  require_once($open_structure);
  $os_result = ob_get_contents();
  ob_end_clean();
  $doc = new DOMDocument();
  $doc -> loadXML ($os_result);
  
  $xpath = new DOMXpath($doc);
  $structure = $xpath -> query('/html');
  ob_start();
  require_once($header);
  $head_result = ob_get_contents();
  ob_end_clean();
  $doc2 = new DOMDocument();
  $doc2 -> loadXML ($head_result);
  // echo $doc2 -> saveXML();
  $node = $doc2 -> getElementsByTagName('head') -> item(0);
  $aaa = $doc -> importNode($node,true);
  // var_dump($aaa);
  if (!is_null($structure)) {
    $doc -> appendChild($aaa);
  }
  header('content-type: text/plain');
  // echo $doc2 -> saveXML();
  // echo $doc -> saveXML();
  // echo var_export($os_result,true);
  echo "\nNode => ".var_export($node,true)."\n";
  echo "\nDoc => ".var_export($doc -> saveXML(),true)."\n";
  echo "\nDoc2 => ".var_export($doc2 -> saveXML(),true)."\n";
  // echo var_export($structure,true);
  foreach ($structure as $element) {
    // echo "\t[". $element->nodeName. "]\n";
    $nodes = $element->childNodes;
    foreach ($nodes as $node) {
      // echo "\tHijos =>".$node->nodeName. "\n";
    }
  }
  return '';
}

Результат такой: введите описание изображения здесь

Я хочу знать, как я могу вставить тег заголовка в тег html, а также почему узел возвращает мне массив void.

Спасибо впереди руки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...