如何按类在特定元素标签内选择任何元素。我需要从元素“ form”内部的“ input”元素中检索属性“ name”的值。例如。有2个表单元素,分别名为_arrived和_class。我需要从表单_class
$source = '
<form method="post" action"arrived.php" class="_arrived">
<input type="hidden" name="type1" value="value1" autocomplete="off">
<input type="hidden" name="type2" value="value2" autocomplete="off">
<input type="hidden" name="type3" value="value3">
<input type="hidden" name="type4" value="value4">
</form>
<form method="post" action="destiny.php" class="_class">
<input type="hidden" name="type1" value="value1" autocomplete="off">
<input type="hidden" name="type2" value="value2" autocomplete="off">
<input type="hidden" name="type3" value="value3">
<input type="hidden" name="type4" value="value4">
<input type="hidden" name="type5" value="value5">
<input type="hidden" name="type6" value="value6">
<input type="hidden" name="type7" value="value8">
<input type="hidden" name="type8" value="value9">
</form>';
$dom = new DOMDocument();
$dom->loadHTML($source);
$xpath = new DOMXpath($dom);
$items = $xpath->query('//form[@class="_class"]');
$form = $items->item(0);
$element = $form->getElementsByTagName("input");
foreach($element as $elemen){
foreach($elemen as $value){
echo $value->getAttribute('name').'<br>';
}
}
答案 0 :(得分:0)
为什么在元素上有循环?这应该起作用:
...
$elements = $form->getElementsByTagName("input");
foreach($elements as $e){
echo $e->getAttribute('name').'<br>';
}
答案 1 :(得分:0)
您只需要一个循环
foreach($element as $elemen){
echo $elemen->getAttribute('name').'<br>';
}
,您将获得所有名称属性。
答案 2 :(得分:0)
您可以直接从输入元素中选择实际的name属性,而不必经历多次对不同方法的调用,然后循环遍历它们并输出文本内容。
这里XPath表达式首先选择您的形式,然后选择每个输入元素,最后使用@name
选择名称属性...
$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadHTML($source);
$xpath = new DOMXpath($dom);
foreach($xpath->query('//form[@class="_class"]//input/@name') as $value){
echo $value->textContent.'<br>';
}
答案 3 :(得分:-1)
1。首先,您必须迭代$elements
一次
2。您必须使用action="arrived.php"
而不是action"arrived.php"
才能从代码中删除警告,即:
警告:DOMDocument :: loadHTML():解析属性名称时出错 实体行:第24行在/ in / tl53u中的2
执行以下操作:
$dom = new DOMDocument();
$dom->loadHTML($source);
$xpath = new DOMXpath($dom);
$items = $xpath->query('//form[@class="_class"]');
$form = $items->item(0);
$element = $form->getElementsByTagName("input");
foreach($element as $elemen){
echo $elemen->getAttribute('name').'<br>';
}
您可以使用libxml_use_internal_errors(true);
忽略警告,但最好的方法是解决警告。检查下面的参考:-
Warning: DOMDocument::loadHTML(): htmlParseEntityRef: expecting ';' in Entity