CLXIII. Tidy関数
導入
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
メソッド
-
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 宣言 |
例
このシンプルな例は、Tidy の基本的な使い方を示しています。
- 目次
- ob_tidyhandler -- バッファを修正するための ob_start コールバック関数
- tidy_access_count -- 指定したドキュメントについて発生したTidyアクセシビリティ警告の数を返す
- tidy_clean_repair -- パースされたマークアップに設定に基く誤りの修正を行う
- tidy_config_count -- 指定したドキュメントについて発生した Tidy 設定エラーの数を返す
- tidy::__construct -- 新規 Tidy オブジェクトを生成する
- tidy_diagnose -- パース、修正されたマークアップの診断を行う
- tidy_error_count -- 指定したドキュメントについて発生した Tidy エラーの数を返す
- tidy_get_body -- Tidy パースツリーの <body> タグから始まる tidyNode オブジェクトを返す
- tidy_get_config -- 現在の Tidy の設定を取得する
- tidy_get_error_buffer -- 指定したドキュメントのパースで発生した警告とエラーを返す
- tidy_get_head -- Tidy パースツリーの <head> タグから始まる tidyNode オブジェクトを返す
- tidy_get_html_ver -- 指定したドキュメントで検出された HTML バージョンを取得する
- tidy_get_html -- Tidy パースツリーの <html> タグから始まる tidyNode オブジェクトを返す
- tidy_get_opt_doc -- 与えられたオプション名に対するドキュメントを返す
- tidy_get_output -- パースされた Tidy マークアップを表す文字列を返す
- tidy_get_release -- Tidy ライブラリのリリース日 (バージョン) を取得する
- tidy_get_root -- Tidy パースツリーのルートを表す tidyNode を返す
- tidy_get_status -- 指定したドキュメントのステータスを取得する
- tidy_getopt -- Tidy ドキュメントについて指定した設定オプションの値を返す
- tidy_is_xhtml -- ドキュメントが XHTML ドキュメントかどうかを示す
- tidy_is_xml -- ドキュメントが一般的な XML ドキュメント (非 HTML/XHTML) かどうかを示す
- tidy_load_config -- 指定したエンコーディングで ASCII コードの Tidy 設定ファイルをロードする
- tidy_node->get_attr -- 指定された属性 ID を持つ属性を返す
- tidy_node->get_nodes -- 指定された ID を持つノード以下のノードの配列を返す
- tidy_node->next -- このノードの次の兄弟を返す
- tidy_node->prev -- このノードの前の兄弟を返す
- tidy_parse_file -- ファイルまたは URI にあるマークアップをパースする
- tidy_parse_string -- 文字列にストアされたドキュメントをパースする
- tidy_repair_file -- ファイルを修正し、それを文字列として返す
- tidy_repair_string -- 別途提供される設定ファイルを使用して文字列を修正する
- tidy_reset_config -- Tidy の設定をデフォルト値に戻す
- tidy_save_config -- 現在の設定を名前が付けられたファイルに保存する
- tidy_set_encoding -- マークアップをパースする際の入力/出力エンコーディングを設定する
- tidy_setopt -- 指定した Tidy ドキュメントについての設定を更新する
- tidy_warning_count -- 指定したドキュメントについて発生した 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 を返す