使用PHP中的NAME解析HTML向所有<input />添加ID

时间:2013-02-12 09:26:17

标签: php parsing dom html-parsing

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

例如:

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

我需要将其解析为:

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

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

我已经找到了一个解决方案但空手而归。

3 个答案:

答案 0 :(得分:1)

好的,所以我完全误解了!在这里回答2:

$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

这必须更接近你想要的,当然?

没有解析器,只是一些简单的DOM工作。

答案 1 :(得分:0)

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

使用jQuery ...

$('input').each(function(){
    var name = $(this).attr('name');
    $(this).attr('id','name');
});

答案 2 :(得分: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