DOM如何在课堂上找到链接?

时间:2015-10-31 16:10:45

标签: php dom

HTML

<div class="imgw">
    <ul>
        <li>
            <a href="http://somesites/index.html">
                <img src="http://somesites.com/picture.jpg"/>
            </a>
        </li>
    </ul>
</div>

PHP

$dom = new DOMDocument();  
$dom->loadHTML($html); 
$div = $dom->getElementByClass('imgw'); 
$links = $div->getElementsByTagName('a'); 
foreach ($links as $link) {
    $li = $link->getAttribute('href');
    echo ($li."<br>");
}

我一直在看这个(PHP DOMDocument),但我仍然不明白如何让它发挥作用。

1 个答案:

答案 0 :(得分:0)

问题1是您没有使用错误报告/检查错误日志。错误报告/日志会告诉您:

  

致命错误:调用未定义的方法DOMDocument :: getElementByClass()

所以getElementByClass不是DOMDocument的功能。您可以遍历所有div,检查它们是否具有您要查找的类,然后如果这样解析这些链接。

$html = '<div class="imgw">
         <ul>
                        <li  >
                            <a href="http://somesites/index.html">
                                <img src="http://somesites.com/picture.jpg"/>
                            </a>


                        </li>
                    </ul>


            </div>';
$dom = new DOMDocument();  
$dom->loadHTML($html); 
$divs = $dom->getElementsByTagName('div');
foreach ($divs as $div){
     if(preg_match('/\bimgw\b/', $div->getAttribute('class'))) {
         $links = $div->getElementsByTagName('a');
         foreach($links as $link){
              $li = $link->getAttribute('href');
              echo ($li."<br>");
         }
     }
}

输出:

http://somesites/index.html<br>

演示:https://eval.in/460741