<?php
// try this html listing example for all nodes / includes a few getElementsByTagName options:
$file = $DOCUMENT_ROOT. "test.html";
$doc = new DOMDocument();
$doc->loadHTMLFile($file);
// example 1:
$elements = $doc->getElementsByTagName('*');
// example 2:
$elements = $doc->getElementsByTagName('html');
// example 3:
//$elements = $doc->getElementsByTagName('body');
// example 4:
//$elements = $doc->getElementsByTagName('table');
// example 5:
//$elements = $doc->getElementsByTagName('div');
if (!is_null($elements)) {
foreach ($elements as $element) {
echo "<br/>". $element->nodeName. ": ";
$nodes = $element->childNodes;
foreach ($nodes as $node) {
echo $node->nodeValue. "\n";
}
}
}
?>
DOMDocument::loadHTMLFile
(PHP 5)
DOMDocument::loadHTMLFile — HTML belgeyi bir dosyadan yükler
Açıklama
$dosya
)HTML belgeyi belirtilen dosyadan yükler. XML belge yüklemedeki gibi belgenin iyi biçemli olma gereği yoktur.
Tavsiye edilmemekle beraber, bu yöntem, bir DOMDocument nesnesini yüklemek ve oluşturmak için duruk olarak da çağrılabilir. Bu duruk yöntem çağrısı, yükleme öncesinde hiçbir DOMDocument özelliğinin atanmasına ihtiyaç duyulmadığı durumlarda kullanılabilir. Ancak böyle bir durumda bir E_STRICT iletisi çıktılanır.
Değiştirgeler
-
dosya -
HTML belgeyi içeren dosyanın yolu.
Dönen Değerler
Başarı durumunda TRUE, başarısızlık durumunda FALSE döner. Duruk olarak çağrıldığı takdirde bir
DOMDocument döndürür ve bir
E_STRICT iletisi çıktılar.
Hatalar/İstisnalar
dosya olarak boş bir dizge veya boş bir dosya
aktarılırsa bir uyarı üretilir. Bu uyarıyı libxml üretmez ve libxml'in hata
işlevleri ile elde edilemez.
Örnekler
Örnek 1 - Bir belge oluşturmak
<?php
$doc = new DOMDocument();
$doc->loadHTMLFile("filename.html");
echo $doc->saveHTML();
?>
Ayrıca Bakınız
- DOMDocument::loadHTML() - HTML belgeyi bir dizgeden yükler
- DOMDocument::saveHTML() - Dahili belgeyi bir HTML dizgesi olarak çıktılar
- DOMDocument::saveHTMLFile() - Dahili belgeyi bir HTML dizge olarak dosyaya yazar
If you want to suppress output warnings from loadHTMLFile($url), put an @ sign in front. This even works in:
<?php
$load = @$dom->loadHTMLFile($url);
?>
Andy, the code you gave should not give that result. In your code, $tag is an <a> element and the nodeValue of elements is null, according to the DOM2 spec. You need to get at the text node first, before getting the node value.
<?
...
foreach ($tags as $tag) {
echo $tag->getAttribute('href').' | '.$tag->childNodes->item(0)->nodeValue."\n";
}
?>
This should output:
/mypage1 | Hello World!
/mypage2 | Another Hello World!
This puts the HTML into a DOM object which can be parsed by individual tags, attributes, etc.. Here is an example of getting all the 'href' attributes and corresponding node values out of the 'a' tag. Very cool....
<?php
$myhtml = <<<EOF
<html>
<head>
<title>My Page</title>
</head>
<body>
<p><a href="/mypage1">Hello World!</a></p>
<p><a href="/mypage2">Another Hello World!</a></p>
</body>
</html>
EOF;
$doc = new DOMDocument();
$doc->loadHTML($myhtml);
$tags = $doc->getElementsByTagName('a');
foreach ($tags as $tag) {
echo $tag->getAttribute('href').' | '.$tag->nodeValue."\n";
}
?>
This should output:
/mypage1 | Hello World!
/mypage2 | Another Hello World!
Note that this function doesn't parse the individual tags WITHIN the html file - it's all loaded as a "black box", and you end up with an XML widget that comprises nothing but the complete chunk of HTML.
I was hoping it would function as a sort of HTML-validator/parser, but that doesn't seem to be the case.
