1

我有使用 PHP 的 DOM 服务器端创建的主文档。而且我必须包含一些没有 DOM 的 PHP/HTML。例子。有一个文件form.php包含一个表格

<form action="" method="post"> 
  <input type="text" name="firstname" id="firstnameid" /><br/>
  <input type="submit" name="submit" value="Submit" />
</form>

我想将该表单放入<DIV>文件index.php中使用 DOM 创建的表单中。里面的DIV依赖于其他逻辑(条件$form_is_needed

<!DOCTYPE html>
<html lang="en">
<head> <meta charset="utf-8" /> </head>

<body>
<?php
$form_is_needed = true;
$dom = new DOMDocument();
$domDiv = $dom->createElement("div"); 

if ($form_is_needed) {
  // trying load not DOM
  $str = file_get_contents('form.php');
  $domDivText = $dom->createTextNode( html_entity_decode( $str )  );
  $domDiv->appendChild($domDivText);
}
else {
  $domDivText = $dom->createTextNode( "There is no form." );
  $domDiv->appendChild($domDivText);
}

$dom->appendChild($domDiv);
$html = $dom->saveHTML();
echo $html; 
?>
</body>
</html>

我在 DIV 中获取我的内容,但已添加转义字符

<div>&lt;form action="" method="post"&gt; 
  &lt;input type="text" name="firstname" id="firstnameid" /&gt;&lt;br/&gt;
  &lt;input type="submit" name="submit" value="Submit" /&gt;
&lt;/form&gt;
</div>
4

2 回答 2

1

据我所知,没有节点可以发出原始内容,但如果它格式正确,您可以尝试将其加载到 aDOMDocumentFragment中并以这种方式附加:

$frag = $dom->createDocumentFragment();
$frag->appendXML($str);
$domDiv->appendChild($frag);
于 2013-09-26T12:23:39.340 回答
0

代替

$str = file_get_contents('form.php');

$str = readfile('form.php');

那应该这样做。

于 2013-09-26T12:34:50.377 回答