適合我的作品,例如
<?php
$doc = new DOMDocument;
$doc->loadhtml(data());
foreach($doc->getElementsByTagName('h2') as $h2) {
foreach($h2->getElementsByTagName('a') as $a) {
echo $a->getAttribute('href'), ': ', $a->nodeValue, "\n";
}
}
function data() {
return <<< eoh
<html>
<head><title>...</title></head>
<body>
<h2><a href="link1">header 1</a></h2>
<p>yadda yadda</p>
<h2><a href="link2">header 2</a></h2>
<p>yadda yadda</p>
<h2><a href="link3">header 3</a></h2>
<p>yadda yadda</p>
</body>
</html>
eoh;
}
但我覺得它更容易使用XPath這個
例如
<?php
$doc = new DOMDocument;
$doc->loadhtml(data());
$xpath = new DOMXPath($doc);
foreach($xpath->query('/html/body//h2/a') as $a) {
echo $a->getAttribute('href'), ": ", $a->nodeValue, "\n";
}
function data() {
return <<< eoh
<html>
<head><title>...</title></head>
<body>
<h2><a href="link1">header 1</a></h2>
<p>yadda yadda</p>
<h2><a href="link2">header 2</a></h2>
<p>yadda yadda</p>
<h2><a href="link3">header 3</a></h2>
<p>yadda yadda</p>
</body>
</html>
eoh;
}
打印
link1: header 1
link2: header 2
link3: header 3
打開錯誤報告。如果PHP停止產生輸出,那麼可能有一個致命錯誤。 '的error_reporting(E_ALL); ini_set('display_errors',1);' –
VolkerK的回答是正確的,但是感謝Michael Berkowski對於那些顯示錯誤,我用它來調試我的代碼。 – Prozi