0

可能重复:
如何使用 PHP 解析和处理 HTML?

我正在尝试使用 PHP 和正则表达式从外部页面获取所有超链接。我关心抓取的链接结构如下:

<li class="magic"><a href="http://blah.com">TargetText1</a></li>
<li class="magic"><a href="http://blah.com">TargetText2</a></li>

请记住,我正在尝试获取锚文本而不是 url。我有下面的代码工作,但它只是刮掉页面上的所有链接。我试图抓取只用上面列出的 li 类包装的链接。

 $url = "http://www.example.com"; 
 $input = @file_get_contents($url) or die("Could not access file: $url"); 

 $regexp = "<a\s[^>]*href=(\"??)([^\" >]*?)\\1[^>]*>(.*)<\/a>";

 if(preg_match_all("/$regexp/siU", $input, $matches)) { 
  print_r($matches);
 }
4

1 回答 1

3
<?php

    $dom = new domDocument;
    $dom->loadHTML($html);
    $dom->preserveWhiteSpace = false;
    $lis = $dom->getElementsByTagName('li');
    foreach($lis  as $li){
        if($li->getAttribute('class')=='magic'){
            $links = $li->getElementsByTagName('a');
            if($links->length){
                echo $links->item(0)->nodeValue;
            }
        }
    }

?>
于 2012-09-06T23:11:49.340 回答