CLXVI. 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をインストール することも可能です。

例 1. PHP 4.3.x において tidy をマニュアルでインストールする

gunzip tidy-xxx.tgz
tar -xvf tidy-xxx.tar
cd tidy-xxx
phpize
./configure && make && make install

Windows ユーザは、拡張モジュールの DLL を http://pecl4win.php.net/ext.php/php_tidy.dll からダウンロードすることが可能です。

PHP5 においては、--with-tidy オプションを使ってコンパイルするだけです。

実行時設定

php.ini の設定により動作が変化します。

表 1. Tidy設定オプション

名前デフォルト変更の可否関数
tidy.default_config""PHP_INI_SYSTEMtidy設定ファイルのデフォルトパス
tidy.clean_output0PHP_INI_PERDIRTidyにより出力を修正する機能をオンまたはオフにする
PHP_INI_* 定数の詳細および定義については 付録I を参照してください。

以下に設定ディレクティブに関する 簡単な説明を示します。

tidy.default_config string

tidy 設定ファイルへのデフォルトパス

tidy.clean_output boolean

Tidy による出力の修正のオン/オフを切り替える

警告

もし動的な画像のような HTML ではないコンテンツを生成する場合、 tidy.clean_output をオンにしないでください。

リソース型

リソース型は定義されていません。

定義済みクラス

tidyNode

メソッド

  • tidyNode::getParent - カレントノードの親を返します。

  • 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_COMMENTHTML コメント
TIDY_NODETYPE_PROCINS処理命令
TIDY_NODETYPE_TEXTテキスト
TIDY_NODETYPE_START開始タグ
TIDY_NODETYPE_END終了タグ
TIDY_NODETYPE_STARTEND空タグ
TIDY_NODETYPE_CDATACDATA
TIDY_NODETYPE_SECTIONXML セクション
TIDY_NODETYPE_ASPASP コード
TIDY_NODETYPE_JSTEJSTE コード
TIDY_NODETYPE_PHPPHP コード
TIDY_NODETYPE_XMLDECLXML 宣言

このシンプルな例は、Tidy の基本的な使い方を示しています。

例 2. Tidy の基本的な使用法

<?php
ob_start
();
?>
<html>a html document</html>
<?php
$html
= ob_get_clean();

// とある設定
$config = array(
           
'indent'         => true,
           
'output-xhtml'   => true,
           
'wrap'           => 200);

// Tidy
$tidy = new tidy;
$tidy->parseString($html, $config, 'utf8');
$tidy->cleanRepair();

// 出力
echo $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 を返す
tidyNode::getParent -- カレントノードの親ノードを返す