PHP:使用DOM或REGEX非侵入式地填写表单输入

我正在开发一个用户认证系统.因为我希望它具有尽可能好的可定制性和灵活性,所以我不想将PHP与HTML混合使用.我开发了一个简单的模板引擎,该引擎工作正常(仅将纯HTML文件用于布局).但是我对表格有疑问.
在某些情况下(例如,当输入验证失败时),我想让他们记住之前输入的数据.我使用输出缓冲向用户显示最终HTML,因此将整个布局存储在字符串中.我要在此字符串中执行的操作是找到特定的HTML元素(通过其ID属性),然后更改其值.
我知道如何解决大小写文本或密码字段的问题,但是我还将使用组合框,并且需要以不同的方式进行处理.
我当时正在考虑使用DOM来完成任务,但是到目前为止,我的尝试还没有成功.

所以这是我想做的:

>使用DOM在字符串中按其ID查找元素更改元素
适当地用新元素替换旧元素
字符串,但保持其余字符串不变

这是一个简单的(不起作用的)代码片段(应该足以说明问题):

<?php
$content = "<input id=\"id\" name=\"name\" type=\"text\" value=\"\" />";
$itemid = "id";
$dom = new DOMDocument();
$dom->loadXML($content);
$item = $dom->getElementById($itemid);
if($item)
{
$value = "New Value";
$newitem = $item;
$newitem->setAttribute('value', $value);
$item = $item->saveXML();
$newitem = $newitem->saveXML();
$content = str_replace($item, $newitem, $content);
}
echo $content;
?>

还是应该改用REGEX?

非常感谢!

解决方法:

这很容易用Simple dom html parser完成.

$data = $content = "<input id=\"id\" name=\"name\" type=\"text\" value=\"\" />";
$html = str_get_html($data);
$html->find("input[id='id']",0)->value = "New Value";
echo $html->save();

不能更容易.

上一篇:javaweb页面上展示动态图片


下一篇:网关协议学习:CGI、FastCGI、WSGI、uWSGI