DOMDocument->loadHTMLFile()

(no version information, might be only in CVS)

DOMDocument->loadHTMLFile() --  Load HTML from a file

Описание

class DOMDocument {

bool loadHTMLFile ( string filename )

}

The function parses the HTML document in the file named filename. Unlike loading XML, HTML does not have to be well-formed to load.

This function may also be called statically to load and create a DOMDocument object. The static invocation may be used when no DOMDocument properties need to be set prior to loading.

Список параметров

filename

The path to the HTML file.

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Примеры

Пример 1. Creating a Document

<?php
$doc
= DOMDocument::loadHTMLFile("filename.html");
print
$doc->saveHTML();

$doc = new DOMDocument();
$doc->loadHTMLFile("filename.html");
print
$doc->saveHTML();
?>



DOMDocument->loadHTMLFile()
yellow5 at beggarchooser dot com
28-Nov-2005 09:49
Here's the function I use to recursively get all text within a node:

function GetNodeText($ndNode)
{
   $sTagText = "";

   if ($ndNode->nodeName == "#text")
   {
       $sTagText = $ndNode->nodeValue;
   }

   if ($ndNode->hasChildNodes())
   {
       $sTagText .= GetNodeText($ndNode->firstChild);
   }

   if ($ndNode->nextSibling)
   {
       $sTagText .= GetNodeText($ndNode->nextSibling);
   }

   return $sTagText;
}
Lachlan Hunt
26-Sep-2005 11:15
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!
andy at carobert dot com
25-May-2005 01:24
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!
bens at effortlessis dot com
08-Apr-2005 05:11
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.

<DOMDocument->loadHTML()DOMDocument->loadXML()>
 Last updated: Tue, 15 Nov 2005