如何使用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从元素中获取包含内容的所有标签[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Python/BeautifulSoup - 如何从元素中删除所有标签?