PHPKonf Istanbul PHP Conference 2019 - Call for Papers

Funções do Tidy

Classes pré-definidas

tidyNode

Propriedades

  • value - o valor da tag (e.g. the html text)

  • name - o nome da tag (e.g. html, a, etc..)

  • type - o tipo de node (uma das constantes acima, e.g. TIDY_NODETYPE_PHP)

  • line* - a linha onde o node inicia

  • column* - a coluna onde o node inicia

  • proprietary* - TRUE se o node refere-se a uma tag proprietária

  • id - o ID da tag (um das constantes acima, e.g. TIDY_TAG_FRAME)

  • attribute - um array com os atributos do node atual, ou NULL se não existir algum

  • child - um array com o filho do tidyNodes, ou NULL se não existir algum

Nota:

As propriedades marcadas com * estão disponíveis somente a partir do PHP 5.1.0.

Índice

  • ob_tidyhandler — ob_start callback function to repair the buffer
  • tidy_access_count — Returns the Number of Tidy accessibility warnings encountered for specified document
  • tidy_config_count — Returns the Number of Tidy configuration errors encountered for specified document
  • tidy_error_count — Returns the Number of Tidy errors encountered for specified document
  • tidy_get_output — Return a string representing the parsed tidy markup
  • tidy_warning_count — Returns the Number of Tidy warnings encountered for specified document
add a note add a note

User Contributed Notes 2 notes

up
2
patatraboum at nospam dot fr
12 years ago
<?php
//
//The tidy tree of your favorite !
//For PHP 5 (CGI)
//Thanks to john@php.net
//
$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>";
//
?>
up
1
bill dot mccuistion at qbopen dot com
14 years ago
Installing tidy on Fedora Core 2 required three libraries:

tidy...
tidy-devel...
libtidy...

All of which I found at http://rpm.pbone.net

Then, finally, could "./configure --with-tidy"

Hope this helps someone out.  This was "REALLY" hard (for me) to figure out as no where else was clearly documented.
To Top