1

我使用 DOMDocument。我的代码在这里。

$dom = new DOMDocument('1.0', 'utf-8');
$textNode = $dom->createTextNode('<input type="text" name="lastName" />');
$dom->appendChild($textNode);
echo $dom->saveHTML();

输出:

&lt;input type="text" name="lastName" /&gt;

我想要这个输出

<input type="text" name="lastName" />

我能怎么做?

4

3 回答 3

3

您需要实际解析 xml 数据而不是将其视为“纯”文本的东西。DOMDocumentFragment 和DOMDocumentFragment::appendXML()可以做到这一点。
例如

$doc = new DOMDocument;
$doc->loadhtml('<html><head><title>...</title></head>
  <body>
    <form method="post" action="lalala">
      <div id="formcontrols">
      </div>
      <div>
        <input type="submit" />
      </div>
    </form>
  </body>
</html>');

// find the parent node of the new xml fragement
$xpath = new DOMXPath($doc);
$parent = $xpath->query('//div[@id="formcontrols"]');
// should test this first
$parent = $parent->item(0);

$fragment = $doc->createDocumentFragment();
$fragment->appendXML('<input type="text" name="lastName" />');
$parent->appendChild($fragment);

echo $doc->savehtml(); 
于 2010-03-28T12:05:02.547 回答
1

更改createTextNodecreateElement。文本节点用于文本:)

$dom = new DOMDocument('1.0', 'utf-8');
$textNode = $dom->createElement('input');
$textNode->setAttribute('type', 'text');
$textNode->setAttribute('name', 'lastName');
$dom->appendChild($textNode);
echo $dom->saveHTML();
于 2010-03-28T03:31:44.267 回答
1

文档的第一件事就是说

“给在此使用字符实体(例如 ©)并发现它们自动转义的任何人的快速说明。正确的做法是使用 createEntityReference 方法(例如 createEntityReference("copy");),然后 appendChild文本节点之间的这个实体。”

于 2010-03-28T12:12:11.777 回答