我有以下HTML。PHP DomDocument HTML操纵
<div id="container">
<div id="current">Current Div</div>
</div>
在PHP中使用DomDocument,我试图添加一个额外的div到HTML前面的div与“当前”的ID。
<div id="container">
<div id="new">New Div</div>
<div id="current">Current Div</div>
</div>
当我使用下面的代码,这似乎与“当前”的ID添加在div里面的DIV,但这个内容div.Can谁能告诉我,之前这是为什么,以及如何我可以得到像上面的HTML一样的结果? (见HTML发行下文)
当前PHP
$doc = new DOMDocument();
$doc->formatOutput = true;
$doc->loadHTMLFile('index.html');
$head = $doc->getElementById('current');
$base = $doc->createElement('div', 'New Div');
$base->setAttribute('id', 'new');
echo $doc->saveHTML();
HTML问题
<div id="container">
<div id="current">
<div id="new">New Div</div>
Current Div
</div>
</div>
编辑:
PHP
$doc = new DOMDocument();
$doc->formatOutput = true;
$doc->loadHTMLFile('index.html');
$container = $doc->getElementById('container');
$current = $doc->getElementById('username');
$new = $doc->createElement('div', 'New Div');
$new->setAttribute('id', 'new');
$container->insertBefore($new, $current);
echo $doc->saveHTML();
HTML
<div id="container">
<form method="post" action="">
<input type="text" name="username" id="username" />
</form>
</div>
错误:
Fatal error: Uncaught exception 'DOMException' with message 'Not Found Error'
in index.php:55 Stack trace: #0 index.php(55):
DOMNode->insertBefore(Object(DOMElement), Object(DOMElement))
当引用输入文本框的id而不是id为“current”的div时,脚本如何中断? - 有什么不同? – Richy
Hi Richy。它打破了?有趣的...你是否得到一个特定的错误?以下对我有用:'$ input = $ doc-> createElement('input'); $ input-> setAttribute('type','text'); $ input-> setAttribute('id','foo'); $ input-> setAttribute('value','bar'); $ container-> insertBefore($ input,$ current); ' –
我已更新我的原始文章,以包含更多详细信息:) – Richy