<?php$file="http://www.php.net";$cns=get_defined_constants(true);$tidyCns=array("tags"=>array(),"types"=>array());foreach($cns["tidy"] as $cKey=>$cVal){ if($cPos=strpos($cKey,$cStr="TAG")) $tidyCns["tags"][$cVal]="$cStr : ".substr($cKey,$cPos+strlen($cStr)+1); elseif($cPos=strpos($cKey,$cStr="TYPE")) $tidyCns["types"][$cVal]="$cStr : ".substr($cKey,$cPos+strlen($cStr)+1);}$tidyNext=array();echo "<html><head><meta http-equiv='Content-Type' content='text/html; charset=windows-1252'><title>Tidy Tree :: $file</title></head>";echo "<body><pre>";tidyTree(tidy_get_root(tidy_parse_file($file)),0);function tidyTree($tidy,$level){ global $tidyCns,$tidyNext; $tidyTab=array(); $tidyKeys=array("type","value","id","attribute"); foreach($tidy as $pKey=>$pVal){ if(in_array($pKey,$tidyKeys)) $tidyTab[array_search($pKey,$tidyKeys)]=$pVal; } ksort($tidyTab); foreach($tidyTab as $pKey=>$pVal){ switch($pKey){ case 0 : if($pVal==4) $value=true; else $value=false; echo indent(true,$level).$tidyCns["types"][$pVal]."\n"; break; case 1 : if($value){ echo indent(false,$level)."VALEUR : ".str_replace("\n","\n".indent(false,$level),$pVal)."\n"; } break; case 2 : echo indent(false,$level).$tidyCns["tags"][$pVal]."\n"; break; case 3 : if($pVal!=NULL){ echo indent(false,$level)."ATTRIBUTS : "; foreach ($pVal as $aKey=>$aVal) echo "$aKey=$aVal "; echo "\n"; } } } if($tidy->hasChildren()){ $level++; $i=0; $tidyNext[$level]=true; echo indent(false,$level)."\n"; foreach($tidy->child as $child){ $i++; if($i==count($tidy->child)) $tidyNext[$level]=false; tidyTree($child,$level); } } else echo indent(false,$level)."\n";}function indent($tidyType,$level){ global $tidyNext; $indent=""; for($i=1;$i<=$level;$i++){ if($i<$level||!$tidyType){ if($tidyNext[$i]) $str="| "; else $str=" "; } else $str="+--"; $indent=$indent.$str; } return $indent;}echo "</pre></body></html>";?>