我正在尝试用PHP中的HTML文档(我无法控制)并确保每个输入都有一个id。如果没有id,那么我需要使用已设置的任何名称添加一个。
例如:
input type="text" name="something" value="something else"
我需要将其解析为:
input type="text" name="something" id="something" value="something else"
我必须为整个文档执行此操作。
我已经找到了一个解决方案但空手而归。
答案 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_callback
(http://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