Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用DOMXPath从HTML文档检索所有链接_Php_Xml_Dom_Xpath - Fatal编程技术网

Php 如何使用DOMXPath从HTML文档检索所有链接

Php 如何使用DOMXPath从HTML文档检索所有链接,php,xml,dom,xpath,Php,Xml,Dom,Xpath,我有这个密码 <?PHP $content = '<html> <head> <title></title> </head> <body> <ul> <li style="border:0px" class="list" id="list1111"> <a

我有这个密码

  <?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 />";
    }
    ?>
我希望对每个锚标记从顶层迭代到最底层,并且我希望能够检索每个标记的属性

这对我来说非常困难,因为“DOMXPath”:(不过对你们中的一些人来说可能很容易

你有什么问题吗

你知道如何解决这个问题吗


提前感谢

XPath应该可以让您无需迭代。要提取
li
的重要属性,请使用XPath,如:

//li/@class

这应该会给你一个你可以使用的合适的对象


这里有一些关于的更多信息,也许您应该编写一个简单的XSLT样式表。匹配
标记,然后祖先:*将提供所有父节点,子节点:*将提供所有子节点-通过XSLT使用简单的XPath语法将有更大的能力。

谢谢,我不仅仅是寻找标记的属性我要找的最重要的事情是找到“锚”标签的父母和孩子。你可以考虑使用“父::”和“子::‘轴’来进行你的迭代。
//li/@class
//li/@id