我正在尝试使用PHP和正则表达式从外部页面获取所有超链接。我关心抓取的链接结构如下:
<li class="magic"><a href="http://blah.com">TargetText1</a></li>
<li class="magic"><a href="http://blah.com">TargetText2</a></li>
请记住,我正在尝试获取锚文本而不是网址。我有下面的代码工作,但它只是擦除页面上的所有链接。我正在尝试用上面列出的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);
}
答案 0 :(得分: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;
}
}
}
?>