2010-03-07 55 views
0

我试着用PHP抓住一个特定链接的目标与PHP

林不知道该怎么办的最好方式,这是抓住一个链接(静态)的目的地(动态)。

链路是

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

的X是字母和Y的是数字(二者的长度可以变化)。 'Linkname'始终保持不变。

是否正则表达式是这里最好的选择?或者,还有更好的方法?

回答

5

我会使用DOM解析器等PHP的built in onesimpleHTMLDOMParser提取的链接,然后parse_url()分析URL:

此功能解析一个URL,并返回包含任何的各种组件的一个关联数组存在的URL。

2

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

0

这种模式将只得到什么在href后,直到该链接名称

href=([\w.?]+) 
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阅读器,DOM或SimpleHTML(如佩卡建议)