Forum und email

Tidy 関数

導入

Tidyは、「Tidy HTML clean and repair utility」用のバインディングで、 HTML文書の誤りを直すだけでなく、操作することやドキュメントツリーを操作する ことも可能となります。

要件

Tidyを使用するには、libtidyがインストールされている必要があります。 libtidyは、tidyのホームページ » https://tidy.sourceforge.net/で入手可能です。

インストール手順

Tidy は、現在、PHP 4.3.xおよびPHP 5用として、PECL拡張モジュールとして » https://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をインストール することも可能です。

Example#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 を » https://pecl4win.php.net/ext.php/php_tidy.dll からダウンロードすることが可能です。

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

実行時設定

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

Tidy設定オプション
名前 デフォルト 変更の可否 変更履歴
tidy.default_config "" PHP_INI_SYSTEM PHP 5.0.0 以降で利用可能です。
tidy.clean_output "0" PHP_INI_USER PHP 5 では PHP_INI_PERDIR。PHP 5.0.0 以降で利用可能です。
PHP_INI_* 定数の詳細および定義については php.ini ディレクティブ を参照してください。

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

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 属性に相当します。

以下の定数が定義されています。

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

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

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 の基本的な使い方を示しています。

Example#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 パースツリーの タグから始まる tidyNode オブジェクトを返す
  • tidy_get_config — 現在の Tidy の設定を取得する
  • tidy_get_error_buffer — 指定したドキュメントのパースで発生した警告とエラーを返す
  • tidy_get_head — Tidy パースツリーの タグから始まる tidyNode オブジェクトを返す
  • tidy_get_html_ver — 指定したドキュメントで検出された HTML バージョンを取得する
  • tidy_get_html — Tidy パースツリーの タグから始まる 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 — カレントノードの親ノードを返す