为了账号安全,请及时绑定邮箱和手机立即绑定

如何按类名解析元素内的元素?

如何按类名解析元素内的元素?

PHP
幕布斯6054654 2021-10-15 10:10:07
如何按类选择特定元素标签内的任何元素。我需要从元素“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>';     } }
查看完整描述

3 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

您可以直接从 input 元素中选择实际的 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>';

}


查看完整回答
反对 回复 2021-10-15
?
温温酱

TA贡献1752条经验 获得超4个赞

你只需要一个循环


foreach($element as $elemen){

    echo $elemen->getAttribute('name').'<br>';

 }

您将获得所有名称属性。


查看完整回答
反对 回复 2021-10-15
?
倚天杖

TA贡献1828条经验 获得超3个赞

为什么在元素上有循环?这应该有效:


...


$elements = $form->getElementsByTagName("input");


foreach($elements as $e){

  echo $e->getAttribute('name').'<br>';

}


查看完整回答
反对 回复 2021-10-15
  • 3 回答
  • 0 关注
  • 169 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信