2

我正在尝试在 PHP 中获取 HTML 文档(我无法控制)并确保每个输入都有一个 id。如果没有 id,那么我需要使用已设置的任何名称添加一个。

例如:

input type="text" name="something" value="something else"

我需要将其解析为:

input type="text" name="something" id="something" value="something else"

我必须对整个文档执行此操作。

我一直在寻找解决方案,但空手而归。

4

3 回答 3

1

OK so I completely misunderstood! Answer number 2 here:

$dom = new DOMDocument; 
$dom->load('yourdoc.html');// Load document
$inputs = $dom->getElementsByTagName("input"); //Get inputs
for($i=0; $i<$inputs->length; $i++){ // For every input found
    $thisName = $inputs->item($i)->getAttribute("name"); // Put the name in a variable
    $inputs->item($i)->setAttribute("id",$thisName); // Then set ID as the same
}
$dom->save('yourdoc.html'); //Save the document

This has to be closer to what you want, surely?

No parsers, just some simple DOM work.

于 2013-02-12T10:19:09.123 回答
0

如果您需要在表单提交之前执行此操作,则需要使用 Javascript。

使用 jQuery...

$('input').each(function(){
    var name = $(this).attr('name');
    $(this).attr('id','name');
});
于 2013-02-12T09:29:14.243 回答
0

这可以通过preg_replace_callbackhttp://www.php.net/manual/en/function.preg-replace-callback.php)来完成

伪代码:

用于 preg_replace_callback提取所有<input ... >并发送someFunction

someFunction(str)

If str contains 'id=':
    return str //no need to add id
else:
    extract value of name, insert 'id="name" ' after '<input ' and return str
于 2013-02-12T10:12:26.847 回答