php-src/ext/tidy/examples/dumpit.php

93 lines
3.4 KiB
PHP
Raw Normal View History

2003-08-01 00:22:43 +00:00
<?php
/*
* dumpit.php
*
* a command-line script which dumps the given HTML, PHP, ASP, XHTML, etc.
* file as it is represented in the document model.
*
* By: John Coggeshall <john@php.net>
*
* Usage; php dumpit.php <filename>
*/
tidy_parse_file($_SERVER['argv'][1]);
2003-08-01 00:22:43 +00:00
/* Optionally you can do this here if you want to fix up the document */
/* tidy_clean_repair(); */
2003-08-01 00:22:43 +00:00
$tree = tidy_get_root();
2003-08-01 00:22:43 +00:00
dump_tree($tree);
echo "\n";
function node_type($type) {
switch($type) {
case TIDY_NODETYPE_ROOT: return "Root Node";
case TIDY_NODETYPE_DOCTYPE: return "DocType Node";
case TIDY_NODETYPE_COMMENT: return "Comment Node";
case TIDY_NODETYPE_PROCINS: return "ProcIns Node";
case TIDY_NODETYPE_TEXT: return "Text Node";
case TIDY_NODETYPE_START: return "Start Node";
case TIDY_NODETYPE_END: return "End Node";
case TIDY_NODETYPE_STARTEND: return "Start/End Node";
case TIDY_NODETYPE_CDATA: return "CDATA Node";
case TIDY_NODETYPE_SECTION: return "Section Node";
case TIDY_NODETYPE_ASP: return "ASP Source Code Node";
case TIDY_NODETYPE_PHP: return "PHP Source Code Node";
case TIDY_NODETYPE_JSTE: return "JSTE Source Code";
case TIDY_NODETYPE_XMLDECL: return "XML Declaration Node";
default: return "Unknown Node";
}
}
function do_leaf($string, $indent) {
for($i = 0; $i < $indent; $i++) {
echo " ";
}
echo $string;
}
function dump_tree($node, $indent = 0) {
if($node) {
/* Put something there if the node name is empty */
$nodename = trim(strtoupper($node->name));
$nodename = (empty($nodename)) ? "[EMPTY]" : $nodename;
/* Generate the Node, and a pretty name for it */
do_leaf(" + $nodename (".node_type($node->type).")\n", $indent);
/* Check to see if this node is a text node. Text nodes are
generated by start/end tags and contain the text in between.
i.e. <B>foo</B> will create a text node with $node->value
equal to 'foo' */
if($node->type == TIDY_NODETYPE_TEXT) {
do_leaf(" |\n", $indent);
do_leaf(" +---- Value: '{$node->value}'\n", $indent);
}
/* Any attributes on this node? */
if(count($node->attributes())) {
2003-08-01 00:22:43 +00:00
do_leaf(" |\n", $indent);
do_leaf(" +---- Attributes\n", $indent);
/* Cycle through the attributes and display them and their values. */
foreach($node->attributes() as $attrib) {
2003-08-01 00:22:43 +00:00
do_leaf(" +--{$attrib->name}\n", $indent);
do_leaf(" | +-- Value: {$attrib->value}\n", $indent);
}
}
/* Recurse along the children to generate the remaining nodes */
if($node->has_children()) {
foreach($node->children() as $child) {
2003-08-01 00:22:43 +00:00
dump_tree($child, $indent + 3);
}
}
}
}
echo tidy_get_output();
2003-08-01 00:22:43 +00:00
?>