Tidy CLXIII. Tidy
Tidy est une interface avec la bibliothèque Tidy HTML, pour nettoyer
et manipuler les documents HTML, et les traiter sous forme de
balises hiérarchisées.
Tidy est actuellement disponible pour PHP 4.3.x et PHP 5 en tant
qu'extension PECL. L'extension est disponible sur
http://pecl.php.net/package/tidy .
Note :
Tidy 1.0 fonctionne juste avec PHP 4.3.x, alors que Tidy 2.0 ne fonctionne que avec PHP 5.
Si PEAR est disponible sur votre système *nix
vous pouvez utiliser l'installeur PEAR pour avoir l'extension tidy, avec la
commande suivante : pear install tidy .
Vous pouvez aussi télécharger l'archive tar.gz et installer tidy à la main :
Exemple 1. Installation de tidy à la main pour PHP 4.3.x
gunzip tidy-xxx.tgz
tar -xvf tidy-xxx.tar
cd tidy-xxx
phpize
./configure && make && make install
Les utilisateurs de windows peuvent télécharger la dll de l'extension sur http://pecl4win.php.net/ext.php/php_tidy.dll .
En PHP 5 vous avez uniquement besoin de compiler en utilisant l'option
--with-tidy.
Le comportement de ces fonctions est
affecté par la configuration dans le fichier php.ini .
Tableau 1. Options de configuration
Nom Par défaut Modifiable Historique tidy.default_config "" PHP_INI_SYSTEM Disponible depuis PHP 5.0.0. tidy.clean_output "0" PHP_INI_PERDIR Disponible depuis PHP 5.0.0.
Pour plus de détails sur les constantes PHP_INI_*,
reportez-vous à
Annexe G .
Voici un éclaircissement sur
l'utilisation des directives de configuration.
tidy.default_config
string
Chemin par défaut pour le fichier de configuration Tidy.
tidy.clean_output
boolean
Activer ou désactiver la réparation du HTML par Tidy
Avertissement
N'activez pas tidy.clean_output si vous générez autre
chose que du HTML, comme des images dynamiques.
Cette extension ne définit aucune ressource.
value - la valeur du noeud (par exemple, le texte html)
name - le nom de la balise (par exemple, html, a, etc.)
type - le type du noeud (une des constantes au-dessus, par exemple, TIDY_NODETYPE_PHP )
line* - la ligne où le noeud commence
column* - la colonne où le noeud commence
proprietary* - TRUE si le noeud réfère à une balise propriétaire
id - le ID de la balise (une des constantes au-dessus, par exemple, TIDY_TAG_FRAME )
attribute - un tableau avec les attributs du noeud courant ou NULL s'il n'y en a pas
child - un tableau avec les enfants tidyNode ou NULL s'il n'y en a pas
Note :
Les propriétés marquées d'un * sont seulement disponibles à partir de PHP 5.1.0.
Ces constantes sont définies par cette
extension, et ne sont disponibles que si cette extension a été compilée avec
PHP, ou bien chargée au moment de l'exécution.
Chaque TIDY_TAG_XXX représente un tag HTML. Par exemple,
TIDY_TAG_A représente le tag
<a href="XX">link</a>. Chaque TIDY_ATTR_XXX
représente un attribut HTML. Par exemple, TIDY_ATTR_HREF
représentera l'attribut href dans l'exemple précédent.
Les constantes suivantes sont définies par cette extension :
Tableau 2. constantes des tags tidy
constante TIDY_TAG_UNKNOWN TIDY_TAG_A TIDY_TAG_ABBR TIDY_TAG_ACRONYM TIDY_TAG_ALIGN TIDY_TAG_APPLET TIDY_TAG_AREA TIDY_TAG_B TIDY_TAG_BASE TIDY_TAG_BASEFONT TIDY_TAG_BDO TIDY_TAG_BGSOUND TIDY_TAG_BIG TIDY_TAG_BLINK TIDY_TAG_BLOCKQUOTE TIDY_TAG_BODY TIDY_TAG_BR TIDY_TAG_BUTTON TIDY_TAG_CAPTION TIDY_TAG_CENTER TIDY_TAG_CITE TIDY_TAG_CODE TIDY_TAG_COL TIDY_TAG_COLGROUP TIDY_TAG_COMMENT TIDY_TAG_DD TIDY_TAG_DEL TIDY_TAG_DFN TIDY_TAG_DIR TIDY_TAG_DIV TIDY_TAG_DL TIDY_TAG_DT TIDY_TAG_EM TIDY_TAG_EMBED TIDY_TAG_FIELDSET TIDY_TAG_FONT TIDY_TAG_FORM TIDY_TAG_FRAME TIDY_TAG_FRAMESET TIDY_TAG_H1 TIDY_TAG_H2 TIDY_TAG_H3 TIDY_TAG_H4 TIDY_TAG_H5 TIDY_TAG_H6 TIDY_TAG_HEAD TIDY_TAG_HR TIDY_TAG_HTML TIDY_TAG_I TIDY_TAG_IFRAME TIDY_TAG_ILAYER TIDY_TAG_IMG TIDY_TAG_INPUT TIDY_TAG_INS TIDY_TAG_ISINDEX TIDY_TAG_KBD TIDY_TAG_KEYGEN TIDY_TAG_LABEL TIDY_TAG_LAYER TIDY_TAG_LEGEND TIDY_TAG_LI TIDY_TAG_LINK TIDY_TAG_LISTING TIDY_TAG_MAP TIDY_TAG_MARQUEE TIDY_TAG_MENU TIDY_TAG_META TIDY_TAG_MULTICOL TIDY_TAG_NOBR TIDY_TAG_NOEMBED TIDY_TAG_NOFRAMES TIDY_TAG_NOLAYER TIDY_TAG_NOSAVE TIDY_TAG_NOSCRIPT TIDY_TAG_OBJECT TIDY_TAG_OL TIDY_TAG_OPTGROUP TIDY_TAG_OPTION TIDY_TAG_P TIDY_TAG_PARAM TIDY_TAG_PLAINTEXT TIDY_TAG_PRE TIDY_TAG_Q TIDY_TAG_RP TIDY_TAG_RT TIDY_TAG_RTC TIDY_TAG_RUBY TIDY_TAG_S TIDY_TAG_SAMP TIDY_TAG_SCRIPT TIDY_TAG_SELECT TIDY_TAG_SERVER TIDY_TAG_SERVLET TIDY_TAG_SMALL TIDY_TAG_SPACER TIDY_TAG_SPAN TIDY_TAG_STRIKE TIDY_TAG_STRONG TIDY_TAG_STYLE TIDY_TAG_SUB TIDY_TAG_TABLE TIDY_TAG_TBODY TIDY_TAG_TD TIDY_TAG_TEXTAREA TIDY_TAG_TFOOT TIDY_TAG_TH TIDY_TAG_THEAD TIDY_TAG_TITLE TIDY_TAG_TR TIDY_TAG_TR TIDY_TAG_TT TIDY_TAG_U TIDY_TAG_UL TIDY_TAG_VAR TIDY_TAG_WBR TIDY_TAG_XMP
Tableau 3. Constantes des attributs tidy
constante TIDY_ATTR_UNKNOWN TIDY_ATTR_ABBR TIDY_ATTR_ACCEPT TIDY_ATTR_ACCEPT_CHARSET TIDY_ATTR_ACCESSKEY TIDY_ATTR_ACTION TIDY_ATTR_ADD_DATE TIDY_ATTR_ALIGN TIDY_ATTR_ALINK TIDY_ATTR_ALT TIDY_ATTR_ARCHIVE TIDY_ATTR_AXIS TIDY_ATTR_BACKGROUND TIDY_ATTR_BGCOLOR TIDY_ATTR_BGPROPERTIES TIDY_ATTR_BORDER TIDY_ATTR_BORDERCOLOR TIDY_ATTR_BOTTOMMARGIN TIDY_ATTR_CELLPADDING TIDY_ATTR_CELLSPACING TIDY_ATTR_CHAR TIDY_ATTR_CHAROFF TIDY_ATTR_CHARSET TIDY_ATTR_CHECKED TIDY_ATTR_CITE TIDY_ATTR_CLASS TIDY_ATTR_CLASSID TIDY_ATTR_CLEAR TIDY_ATTR_CODE TIDY_ATTR_CODEBASE TIDY_ATTR_CODETYPE TIDY_ATTR_COLOR TIDY_ATTR_COLS TIDY_ATTR_COLSPAN TIDY_ATTR_COMPACT TIDY_ATTR_CONTENT TIDY_ATTR_COORDS TIDY_ATTR_DATA TIDY_ATTR_DATAFLD TIDY_ATTR_DATAPAGESIZE TIDY_ATTR_DATASRC TIDY_ATTR_DATETIME TIDY_ATTR_DECLARE TIDY_ATTR_DEFER TIDY_ATTR_DIR TIDY_ATTR_DISABLED TIDY_ATTR_ENCODING TIDY_ATTR_ENCTYPE TIDY_ATTR_FACE TIDY_ATTR_FOR TIDY_ATTR_FRAME TIDY_ATTR_FRAMEBORDER TIDY_ATTR_FRAMESPACING TIDY_ATTR_GRIDX TIDY_ATTR_GRIDY TIDY_ATTR_HEADERS TIDY_ATTR_HEIGHT TIDY_ATTR_HREF TIDY_ATTR_HREFLANG TIDY_ATTR_HSPACE TIDY_ATTR_HTTP_EQUIV TIDY_ATTR_ID TIDY_ATTR_ISMAP TIDY_ATTR_LABEL TIDY_ATTR_LANG TIDY_ATTR_LANGUAGE TIDY_ATTR_LAST_MODIFIED TIDY_ATTR_LAST_VISIT TIDY_ATTR_LEFTMARGIN TIDY_ATTR_LINK TIDY_ATTR_LONGDESC TIDY_ATTR_LOWSRC TIDY_ATTR_MARGINHEIGHT TIDY_ATTR_MARGINWIDTH TIDY_ATTR_MAXLENGTH TIDY_ATTR_MEDIA TIDY_ATTR_METHOD TIDY_ATTR_MULTIPLE TIDY_ATTR_NAME TIDY_ATTR_NOHREF TIDY_ATTR_NORESIZE TIDY_ATTR_NOSHADE TIDY_ATTR_NOWRAP TIDY_ATTR_OBJECT TIDY_ATTR_OnAFTERUPDATE TIDY_ATTR_OnBEFOREUNLOAD TIDY_ATTR_OnBEFOREUPDATE TIDY_ATTR_OnBLUR TIDY_ATTR_OnCHANGE TIDY_ATTR_OnCLICK TIDY_ATTR_OnDATAAVAILABLE TIDY_ATTR_OnDATASETCHANGED TIDY_ATTR_OnDATASETCOMPLETE TIDY_ATTR_OnDBLCLICK TIDY_ATTR_OnERRORUPDATE TIDY_ATTR_OnFOCUS TIDY_ATTR_OnKEYDOWN TIDY_ATTR_OnKEYPRESS TIDY_ATTR_OnKEYUP TIDY_ATTR_OnLOAD TIDY_ATTR_OnMOUSEDOWN TIDY_ATTR_OnMOUSEMOVE TIDY_ATTR_OnMOUSEOUT TIDY_ATTR_OnMOUSEOVER TIDY_ATTR_OnMOUSEUP TIDY_ATTR_OnRESET TIDY_ATTR_OnROWENTER TIDY_ATTR_OnROWEXIT TIDY_ATTR_OnSELECT TIDY_ATTR_OnSUBMIT TIDY_ATTR_OnUNLOAD TIDY_ATTR_PROFILE TIDY_ATTR_PROMPT TIDY_ATTR_RBSPAN TIDY_ATTR_READONLY TIDY_ATTR_REL TIDY_ATTR_REV TIDY_ATTR_RIGHTMARGIN TIDY_ATTR_ROWS TIDY_ATTR_ROWSPAN TIDY_ATTR_RULES TIDY_ATTR_SCHEME TIDY_ATTR_SCOPE TIDY_ATTR_SCROLLING TIDY_ATTR_SELECTED TIDY_ATTR_SHAPE TIDY_ATTR_SHOWGRID TIDY_ATTR_SHOWGRIDX TIDY_ATTR_SHOWGRIDY TIDY_ATTR_SIZE TIDY_ATTR_SPAN TIDY_ATTR_SRC TIDY_ATTR_STANDBY TIDY_ATTR_START TIDY_ATTR_STYLE TIDY_ATTR_SUMMARY TIDY_ATTR_TABINDEX TIDY_ATTR_TARGET TIDY_ATTR_TEXT TIDY_ATTR_TITLE TIDY_ATTR_TOPMARGIN TIDY_ATTR_TYPE TIDY_ATTR_USEMAP TIDY_ATTR_VALIGN TIDY_ATTR_VALUE TIDY_ATTR_VALUETYPE TIDY_ATTR_VERSION TIDY_ATTR_VLINK TIDY_ATTR_VSPACE TIDY_ATTR_WIDTH TIDY_ATTR_WRAP TIDY_ATTR_XML_LANG TIDY_ATTR_XML_SPACE TIDY_ATTR_XMLNS
Tableau 4. Constantes de types de noeud tidy
constante description TIDY_NODETYPE_ROOT noeud racine TIDY_NODETYPE_DOCTYPE doctype TIDY_NODETYPE_COMMENT commentaire HTML TIDY_NODETYPE_PROCINS Instruction de processus TIDY_NODETYPE_TEXT Texte TIDY_NODETYPE_START début de tag TIDY_NODETYPE_END fin de tag TIDY_NODETYPE_STARTEND tag vide TIDY_NODETYPE_CDATA CDATA TIDY_NODETYPE_SECTION section XML TIDY_NODETYPE_ASP code ASP TIDY_NODETYPE_JSTE code JSTE TIDY_NODETYPE_PHP code PHP TIDY_NODETYPE_XMLDECL Déclaration XML
Ce simple exemple montre l'utilisation de base de Tidy.
Exemple 2. Utilisation de base de Tidy
<?php ob_start (); ?> <html>Un document html</html><? $html = ob_get_clean (); // Specify configuration $config = array( 'indent' => true , 'output-xhtml' => true , 'wrap' => 200 ); // Tidy $tidy = new tidy ; $tidy -> parseString ( $html , $config , 'utf8' ); $tidy -> cleanRepair (); // Output echo $tidy ; ?>