2011-03-22 120 views
0

我正在尋找一些PHP中的HTML解析器,它可以幫助我從html源文件中提取href values解析HTML源以提取錨點和鏈接標記href值

我看着phpQuery及其最好的,但它是對我的需求過於矯枉過正,並使大量的CPU做額外的東西,我不需要。

我還檢查

$ DOM =新的DomDocument();
$ dom-> loadHTML($ html);

但它有問題解析HTML5標籤。

有沒有更好的library/class還是有辦法做到這一點?

+0

您是否僅從錨點和鏈接標籤中提取href?爲什麼在這種情況下HTML5標籤會影響你?你看過DOMXPath嗎? – 2011-03-22 20:42:43

+0

@tandu,'loadHTML'實際上是針對HTML4進行驗證的。嘗試使用HTML5標籤(例如「

」)會導致警告。也就是說,當我測試它時,似乎確實使標籤可以找到並且可以序列化。 – Charles 2011-03-22 20:55:34

回答

0

那麼,你可以使用正則表達式來提取數據:

$html = "This is some stuff right here. <a href='index.html'>Check this out!</a> <a href=herp.html>And this is another thing!</a> <a href=\"derp.html\">OH MY GOSH</a>"; 
preg_match_all('/href=[\'"]?([^\s\>\'"]*)[\'"\>]/', $html, $matches); 
$hrefs = ($matches[1] ? $matches[1] : false); 
print_r($hrefs); 
+0

非常感謝。我進一步使它不區分大小寫,並且增加了額外的'(a | link)+'來解析它們和空格的異常,它似乎不是完整的解決方案'/ \ s *(a | link)+ \ s * href = [\'「]?([^ \ s \> \'」] *)[\'「\>]/i' – Shishant 2011-03-22 20:55:05

+0

只是一個警告詞:不會驗證'...' – 2011-03-22 21:09:58

0

我用這個 - -

$html = '<a href="http://google.com"><img src="images/a.png" /></a>'; 
preg_match('/href="([^\s"]+)/', $html, $match); 
echo '<pre>'; 
print_r($match);