Tidyは、「Tidy HTML clean and repair utility」用のバインディングで、 HTML文書の誤りを直すだけでなく、操作することやドキュメントツリーを操作する ことも可能となります。
Tidyを使用するには、libtidyがインストールされている必要があります。 libtidyは、tidyのホームページ http://tidy.sourceforge.net/で入手可能です。
Tidy は、現在、PHP 4.3.xおよびPHP 5用として、PECL拡張モジュールとして http://pecl.php.net/package/tidy. から入手可能です。
注意: Tidy 1.0 はPHP 4.3.x専用で、Tidy 2.0はPHP 5は専用です。
PEAR は、 *nix互換のシステムで利用可能で、tidy拡張モジュールをインストールする際に 以下のようにpearインストーラを使用することができます。 : pecl install tidy
次のようにマニュアルでtar.gzパッケージをダウンロードし、tidyをインストール することも可能です。
Windows ユーザは、拡張モジュールの DLL を http://pecl4win.php.net/ext.php/php_tidy.dll からダウンロードすることが可能です。
PHP5 においては、--with-tidy オプションを使ってコンパイルするだけです。
php.ini の設定により動作が変化します。
表 1. Tidy設定オプション
| 名前 | デフォルト | 変更の可否 | 関数 | 
|---|---|---|---|
| tidy.default_config | "" | PHP_INI_SYSTEM | tidy設定ファイルのデフォルトパス | 
| tidy.clean_output | 0 | PHP_INI_PERDIR | Tidyにより出力を修正する機能をオンまたはオフにする | 
以下に設定ディレクティブに関する 簡単な説明を示します。
リソース型は定義されていません。
tidyNode->hasChildren - カレントノードが子を持つ場合、TRUE を返します。
tidyNode->hasSiblings - カレントノードが兄弟を持つ場合、TRUE を返します。
tidyNode->isAsp - カレントノードが ASP コードの場合、TRUE を返します。
tidyNode->isComment - カレントノードが コメントの場合、TRUE を返します。
tidyNode->isHtml - カレントノードが HTML の場合、TRUE を返します。
tidyNode->isJste - カレントノードが JSTE の場合、TRUE を返します。
tidyNode->isPhp - カレントノードが PHP の場合、TRUE を返します。
tidyNode->isText - カレントノードがテキスト (マークアップでない) の場合、 TRUE を返します。
value - ノードの値 (HTML テキストなど)
name - タグの名前 (html, a, など)
type - ノードの種類 (上記の定数の 1 つ。例えば TIDY_NODETYPE_PHP)
line* - ノードが開始する行
column* - ノードが開始するカラム
proprietary* - もしノードがプロプライエタリなタグの場合、 TRUE
id - タグの ID (上記の定数の 1 つ。例えば TIDY_TAG_FRAME)
attribute - カレントノードの属性の配列。存在しない場合 NULL
child - 子の tidyNode の配列。存在しない場合 NULL
注意: * 付きのプロパティは PHP 5.1.0 からのみ利用可能です。
以下の定数が定義されています。 この関数の拡張モジュールが PHP 組み込みでコンパイルされているか、 実行時に動的にロードされている場合のみ使用可能です。
それぞれの TIDY_TAG_XXX は HTML タグに相当します。 例えば、 TIDY_TAG_A は <a href="XX">link</a> タグに相当します。 それぞれの TIDY_ATTR_XXX は、HTML 属性に相当します。 例えば、 TIDY_ATTR_HREF は前の例の href 属性に相当します。
以下の定数が定義されています。
表 2. tidy タグ定数
| 定数 | 
|---|
| 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 | 
表 3. tidy 属性定数
| 定数 | 
|---|
| 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 | 
表 4. tidy ノード型定数
| 定数 | 説明 | 
|---|---|
| TIDY_NODETYPE_ROOT | ルートノード | 
| TIDY_NODETYPE_DOCTYPE | 文章型 | 
| TIDY_NODETYPE_COMMENT | HTML コメント | 
| TIDY_NODETYPE_PROCINS | 処理命令 | 
| TIDY_NODETYPE_TEXT | テキスト | 
| TIDY_NODETYPE_START | 開始タグ | 
| TIDY_NODETYPE_END | 終了タグ | 
| TIDY_NODETYPE_STARTEND | 空タグ | 
| TIDY_NODETYPE_CDATA | CDATA | 
| TIDY_NODETYPE_SECTION | XML セクション | 
| TIDY_NODETYPE_ASP | ASP コード | 
| TIDY_NODETYPE_JSTE | JSTE コード | 
| TIDY_NODETYPE_PHP | PHP コード | 
| TIDY_NODETYPE_XMLDECL | XML 宣言 |