如何使用PHP从元素中获取包含内容的所有标签[重复]

Posted

技术标签:

【中文标题】如何使用PHP从元素中获取包含内容的所有标签[重复]【英文标题】:How to get all tags with content from an element using PHP [duplicate] 【发布时间】:2022-01-11 15:54:59 【问题描述】:

是否可以使用 php(DOMDocument 类)获取所有带有内容的 html 元素(子元素)?我只是无法得到结果。假设我只知道我会有<td> 标签,但不知道<td> 里面会有什么标签 示例:

$doc = new DOMDocument(); 
$el = "<td><a href='http://google.hr'>test1</a><div>Test2</div></td>";
$doc->loadHTML($el);
$doc->getElementsByTagName("td")->item(0)->nodeValue /* I only get plain text */

编辑:没有类似 javascript 的解决方案

【问题讨论】:

如何获取属性,带值?它看起来像是使用 PHP Simple HTML DOM Parser 之类的库的唯一“干净”方式,我知道它存在。 您是否看到接受的答案以递归方式迭代/遍历每个节点?一旦你在一个节点上,你可以做任何你想做的事情,包括属性。如果这不是你想要的,你可以编辑一个你想从中得到什么的例子吗? 【参考方案1】:

这将为您提供所有元素信息:

$html = "<td><a href='http://google.hr'>test1</a><div>Test2</div></td>";
$dom = new DOMDocument();
$dom->loadHTML($html);
foreach($dom->getElementsByTagName('*') as $element )
    echo "<pre>";
    print_R($element);
    echo "</pre>";

要获取属性信息,请使用:

$p = $dom->getElementsByTagName('a')->item(0);
if ($p->hasAttributes()) 
  foreach ($p->attributes as $attr) 
    $name = $attr->nodeName;
    $value = $attr->nodeValue;
    echo "Attribute '$name' :: '$value'<br />";
  

【讨论】:

href属性在哪里? href 不是标签。 @Slit 我已经更新了获取属性名称的答案。 谢谢,看来唯一的方法是逐个元素迭代和检查元素。与 JavaScript innerHTML 完全不同

以上是关于如何使用PHP从元素中获取包含内容的所有标签[重复]的主要内容,如果未能解决你的问题,请参考以下文章

php xpath如何从父元素内的多个元素中获取值

Python/BeautifulSoup - 如何从元素中删除所有标签?

如何从 JQuery each() 中获取元素列表

如何使用 php 从 SQL 数据库中选择包含特定文本的所有行 [重复]

如何获取页面上的所有的标签元素?排除重复的。

如何使用键在php中获取数组的第一个元素以及如何找到数组的第一个键[重复]