tidyNode::isHtml
(PHP 5, PHP 7, PHP 8)
tidyNode::isHtml — Checks if a node is an element node
Description
Tells if the node is an element node, but not the root node of the document.
Parameters
This function has no parameters.
Return Values
Returns true
if the node is an element node, but not the root node of the document, false
otherwise.
Changelog
Version | Description |
---|---|
7.3.24, 7.4.12 | This function has been fixed to have reasonable behavior. Previously, almost any node was reported as being an HTML node. |
Examples
Example #1 Extract HTML code from a mixed HTML document
<?php
$html = <<< HTML
<html><head>
<?php echo '<title>title</title>'; ?>
<#
/* JSTE code */
alert('Hello World');
#>
</head>
<body>
<?php
// PHP code
echo 'hello world!';
?>
<%
/* ASP code */
response.write("Hello World!")
%>
<!-- Comments -->
Hello World
</body></html>
Outside HTML
HTML;
$tidy = tidy_parse_string($html);
$num = 0;
get_nodes($tidy->html());
function get_nodes($node) {
// check if the current node is of requested type
if($node->isHtml()) {
echo "\n\n# html node #" . ++$GLOBALS['num'] . "\n";
echo $node->value;
}
// check if the current node has childrens
if($node->hasChildren()) {
foreach($node->child as $child) {
get_nodes($child);
}
}
}
?>
The above example will output:
# html node #1 <html> <head> <?php echo '<title>title</title>'; ?><# /* JSTE code */ alert('Hello World'); #> <title></title> </head> <body> <?php // PHP code echo 'hello world!'; ?><% /* ASP code */ response.write("Hello World!") %><!-- Comments --> Hello WorldOutside HTML </body> </html> # html node #2 <head> <?php echo '<title>title</title>'; ?><# /* JSTE code */ alert('Hello World'); #> <title></title> </head> # html node #3 <title></title> # html node #4 <body> <?php // PHP code echo 'hello world!'; ?><% /* ASP code */ response.write("Hello World!") %><!-- Comments --> Hello WorldOutside HTML </body>