用php抓取特定链接的目的地

时间:2010-03-07 22:21:29

标签: php regex

我试图用php

获取链接的目的地(动态)(静态)

我不确定最好的办法是什么。

链接

<a href=page.php?XXYYYYYYY>LinkName</a>

X是字母,Y是数字(两者的长度可以不同)。 “Linkname”总是保持不变。

正则表达式是最好的选择吗?或者有更好的方法吗?

4 个答案:

答案 0 :(得分:5)

我会使用像PHP的built in onesimpleHTMLDOMParser这样的DOM解析器来提取链接,并使用parse_url()来分析网址:

  

此函数解析URL并返回一个关联数组,该数组包含存在的URL的各种组件。

答案 1 :(得分:2)

正则表达式不是最好的方法。使用HTML解析器,例如DomDocument

答案 2 :(得分:2)

如果你的HTML有效,你可以使用SimpleXML

轻松完成
$html = <<< HTML
<ul>
    <li><a href="page.php?XX">Link1</a></li>
    <li><a href="page.php?YY">Link2</a></li>
    <li><a href="page.php?ZZ">Link3</a></li>
</ul>
HTML;

然后

$doc = simplexml_load_string($html);
$links = $doc->xpath('//a/@href');
foreach ($links as $link) {
    $url = parse_url($link);
    var_dump($url['query']);
}
输出

string(2) "XX"
string(2) "YY"
string(2) "ZZ"

如果无法使用有效的HTML,请尝试使用XML Reader,DOM或SimpleHTML(如Pekka建议的那样)

答案 3 :(得分:0)

此模式将仅获取href之后的内容,直到链接名称

href=([\w.?]+)