2013-01-15 42 views
-1

結果:使用PHP如果我有以下的HTML代碼返回從HTML頁面

<ul> 
    <li> 
    <a href="/link1/">link 1</a> 
    </li> 
    <li> 
    <a href="/link2/">link 2</a> 
    </li> 
... 
</ul> 

我如何使用PHP來返回一個包含所有HREF的內容數組?

例如:

$array[0]="/link1/"; 
$array[1]="/link2/"; 

等。

+6

lalalalalalaa .....你有什麼試過 –

+0

@Robin這段代碼不是我的,它來自一位朋友,我告訴他你不能使用PHP訪問瀏覽器呈現的已經服務的頁面上的內容,並且應該使用Javascript或jQuery來代替,但是我想向專業人士證實我是對還是錯。 –

+1

[DOMDocument](http://php.net/manual/en/class.domdocument.php)和[DOMXPath](http://php.net/manual/en/class.domxpath.php)在這裏是你的朋友。 ADD:啊,「由瀏覽器渲染」在這裏是一個非常重要的位... – Havelock

回答

4

您可以使用DOMXpath(加this referencethis chart)沿DOMDocument提取只是從HTML什麼:

$dom = new DOMDocument; 
$dom->loadHTML('<ul> 
    <li><a href="/link1/">link 1</a></li> 
    <li><a href="/link2/">link 2</a></li> 
</ul>'); 
$xpath = new DOMXpath($dom); 
$links = array(); 
foreach($xpath->query("//ul//a[@href]") as $a) { 
    $links[] = $a->getAttribute("href"); 
} 
var_dump($links); 

// array(2) { 
// [0]=> 
// string(7) "/link1/" 
// [1]=> 
// string(7) "/link2/" 
// } 

變化loadHTML($string)loadHTMLFile($path_or_url)從文件加載內容。