我有这段代码
<?PHP
$content = '<html>
<head>
<title></title>
</head>
<body>
<ul>
<li style="border:0px" class="list" id="list1111">
<a href="http://www.example.com/" style="font-size:10px" class="mylinks">
<img src="logo.gif" width="235" height="97" alt="logo example" border="0"/>
</a>
</li>
<li style="border:0px" class="list" id="list2222">
<a href="http://www.example.com/2222222" class="mylinks">
second link
</a>
</li>
</ul>
</body>
</html> ';
$doc = new DOMDocument;
$doc->loadhtml($content);
$xpath = new DOMXPath($doc);
$hrefs = $xpath->evaluate("/html/body//a");
for ($i = 0; $i < $hrefs->length; $i++) {
$href = $hrefs->item($i);
$url = $href->getAttribute('href');
echo $url ."<br />";
}
?>
此代码非常简单,它只是从HTML文档中检索所有锚标记 我找到了here
我想要的更复杂:)
我想检索所有锚标记+所有子标记和父标记以及每个锚标记的属性
例如,我想要的结果是在检索第一个锚标签时是这样的
1-html
2-body
3-ul
4-li(class:list,id:list1111,style:etc....)
5-a(href:www.example.com etc..)
6-img(width:257 etc)
我想为每个锚标记从顶层迭代到最低层,我希望能够检索每个标记的属性
由于“DOMXPath”这对我来说非常困难:(但对于你们中的一些人来说可能很容易
你有任何问题吗? 你知道如何解决这个问题吗?提前致谢
答案 0 :(得分:1)
XPath应该这样做,所以你不需要迭代。要提取li
的重要属性,请使用XPath:
//li/@class
或
//li/@id
它应该为您提供一个可以使用的可迭代对象。
以下是有关XPaths
的更多信息答案 1 :(得分:0)
也许你应该编写一个简单的XSLT样式表。匹配<a>
标签,然后祖先:: *会给所有父节点,child :: *会给你所有的孩子 - 你可以通过XSLT使用简单的XPath语法获得更多的力量。