php dom 加载表单并在其中创建元素
php dom load form and create element inside
我想做的是加载一个表单并在其中创建元素,但我最终得到的结果是这样的:
<form id="form_54" accept-charset="utf-8"></form><input type="text" name="name">
我正在寻找的出口是:
<form id="form_54" accept-charset="utf-8"><input type="text" name="name"></form>
这是我的职能:
public function input($name, $attributes = array(), $type = 'text')
{
$form = new DOMDocument();
$form->loadXML($this->doc->saveHTML());
$input = $form->createElement('input');
$input->setAttribute('type', $type);
$input->setAttribute('name', $name);
if(isset($attributes))
{
foreach($attributes as $attr => $val)
{
$input->setAttribute($attr, $val);
}
}
$form->appendChild($input);
$this->doc->loadXML($form->saveHTML());
}
感谢 Ghost 的正确功能:
public function input($name, $attributes = array(), $type = 'text')
{
$form = $this->doc->getElementsByTagName('form')->item(0);
$input = $this->doc->createElement('input');
$input->setAttribute('type', $type);
$input->setAttribute('name', $name);
if(isset($attributes))
{
foreach($attributes as $attr => $val)
{
$input->setAttribute($attr, $val);
}
}
$form->appendChild($input);
$this->doc->appendChild($form);
}
很可能您是在父元素而不是表单上附加。尝试先定位表单,然后进行追加。
public function input($name, $attributes = array(), $type = 'text')
{
$dom = new DOMDocument();
$dom->loadXML($this->doc->saveHTML());
// target the form
$form = $dom->getElementsByTagName('form')->item(0);
$input = $dom->createElement('input');
$input->setAttribute('type', $type);
$input->setAttribute('name', $name);
if(isset($attributes))
{
foreach($attributes as $attr => $val)
{
$input->setAttribute($attr, $val);
}
}
$form->appendChild($input);
$this->doc->loadXML($form->saveHTML());
}
我想做的是加载一个表单并在其中创建元素,但我最终得到的结果是这样的:
<form id="form_54" accept-charset="utf-8"></form><input type="text" name="name">
我正在寻找的出口是:
<form id="form_54" accept-charset="utf-8"><input type="text" name="name"></form>
这是我的职能:
public function input($name, $attributes = array(), $type = 'text')
{
$form = new DOMDocument();
$form->loadXML($this->doc->saveHTML());
$input = $form->createElement('input');
$input->setAttribute('type', $type);
$input->setAttribute('name', $name);
if(isset($attributes))
{
foreach($attributes as $attr => $val)
{
$input->setAttribute($attr, $val);
}
}
$form->appendChild($input);
$this->doc->loadXML($form->saveHTML());
}
感谢 Ghost 的正确功能:
public function input($name, $attributes = array(), $type = 'text')
{
$form = $this->doc->getElementsByTagName('form')->item(0);
$input = $this->doc->createElement('input');
$input->setAttribute('type', $type);
$input->setAttribute('name', $name);
if(isset($attributes))
{
foreach($attributes as $attr => $val)
{
$input->setAttribute($attr, $val);
}
}
$form->appendChild($input);
$this->doc->appendChild($form);
}
很可能您是在父元素而不是表单上附加。尝试先定位表单,然后进行追加。
public function input($name, $attributes = array(), $type = 'text')
{
$dom = new DOMDocument();
$dom->loadXML($this->doc->saveHTML());
// target the form
$form = $dom->getElementsByTagName('form')->item(0);
$input = $dom->createElement('input');
$input->setAttribute('type', $type);
$input->setAttribute('name', $name);
if(isset($attributes))
{
foreach($attributes as $attr => $val)
{
$input->setAttribute($attr, $val);
}
}
$form->appendChild($input);
$this->doc->loadXML($form->saveHTML());
}