如何通过 class 名称解析元素中的元素?
How to parse element within element by class name?
如何通过 class select 特定元素标签内的任何元素。我需要从元素 "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>';
}
}
为什么元素上有循环?这应该有效:
...
$elements = $form->getElementsByTagName("input");
foreach($elements as $e){
echo $e->getAttribute('name').'<br>';
}
你只需要一个循环
foreach($element as $elemen){
echo $elemen->getAttribute('name').'<br>';
}
您将获得所有名称属性。
1.First 你必须迭代 $elements
一次
2.You 必须使用 action="arrived.php"
而不是 action"arrived.php"
来从您的代码中删除警告,即:
Warning: DOMDocument::loadHTML(): error parsing attribute name in
Entity, line: 2 in /in/tl53u on line 24
喜欢以下:
$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
您可以 select 直接从输入元素中获取实际名称属性,而不必多次调用不同的方法,然后循环遍历它们并输出文本内容。
这里的 XPath 表达式首先 select 是您之后的形式,然后将挑选出每个输入元素,最后使用 @name
将 select 名称属性...
$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>';
}
如何通过 class select 特定元素标签内的任何元素。我需要从元素 "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>';
}
}
为什么元素上有循环?这应该有效:
...
$elements = $form->getElementsByTagName("input");
foreach($elements as $e){
echo $e->getAttribute('name').'<br>';
}
你只需要一个循环
foreach($element as $elemen){
echo $elemen->getAttribute('name').'<br>';
}
您将获得所有名称属性。
1.First 你必须迭代 $elements
一次
2.You 必须使用 action="arrived.php"
而不是 action"arrived.php"
来从您的代码中删除警告,即:
Warning: DOMDocument::loadHTML(): error parsing attribute name in Entity, line: 2 in /in/tl53u on line 24
喜欢以下:
$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
您可以 select 直接从输入元素中获取实际名称属性,而不必多次调用不同的方法,然后循环遍历它们并输出文本内容。
这里的 XPath 表达式首先 select 是您之后的形式,然后将挑选出每个输入元素,最后使用 @name
将 select 名称属性...
$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>';
}