Podręcznik PHP
Poprzedni |  | Następny

# CLXIV. Tidy

# Wstęp

Tidy jest dowiązaniem do narzędzia Tidy HTML Czyść i Napraw, które pozwala nie tylko porządkować i manipulować dokumentami HTML ale również przemierzać drzewo dokumentu.

# Wymagania

Aby używać Tidy musisz mieć zainstalowaną bibliotekę libtidy dostępną na stronie http://tidy.sourceforge.net/.

# Instalacja

Tidy jest obecnie dostępne dla PHP 4.3.x i PHP 5 jako rozszerzenie PECL http://pecl.php.net/package/tidy.

> Notatka: Tidy 1.0 jest dostępne w PHP 4.3.x, natomiast Tidy 2.0 dla PHP 5.

Jeżeli PEAR jest dostępny na Twoim systemie uniksowym możesz użyć instalatora pear do zainstalowania rozszerzenia tidy, następującym poleceniem: pecl install tidy.

Zawsze możesz pobrać źródła tar.gz i zainstalować tidy ręcznie:

Przykład 1. instalacja tidy ze źródeł w PHP 4.3.x

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

Użytkownicy Windows mogą pobrać skompilowaną bibliotekę dll ze strony http://pecl4win.php.net/ext.php/php_tidy.dll.

W PHP5 wystarczy dodać opcję podczas kompilacji `--with-tidy`.

# Konfiguracja uruchomieniowa

Na działanie tych funcji wpływają ustawienia zawarte w pliku `php.ini`.

Tabela 1. Opcje konfiguracyjne Tidy

Nazwa | Domyślnie | Zmieniany | Dziennik zmian
--- | --- | --- | ---
tidy.default_config | "" | PHP_INI_SYSTEM | Dostępna od PHP 5.0.0.
tidy.clean_output | "0" | PHP_INI_PERDIR | Dostępna od PHP 5.0.0.

Szczegóły i definicje dotyczące stałych PHP_INI_* znajdują się w rozdziale Dodatek G.

Oto krótkie wyjaśnienie dyrektyw konfiguracji.

`tidy.default_config` string

  Domyślna ścieżka do pliku konfiguracyjnego tidy.

`tidy.clean_output` boolean

  Włącza/wyłącza wysyłanie wyników przetworzonych przez Tidy na standardowe wyjście.

  Ostrzeżenie
  Nie ustawiaj tej opcji `tidy.clean_output` na TRUE jeżeli generujesz nietekstową treść np. dynamiczne obrazy.

# Typy zasobów

To rozszerzenie nie posiada żadnych rodzajów zasobów.

# Klasy predefiniowane

## tidyNode

### Metody

- tidyNode->hasChildren - Zwraca `TRUE` jeżeli bieżący węzeł posiada potomków

- tidyNode->hasSiblings - Zwraca `TRUE` jeżeli bieżący węzeł posiada sąsiadów

- tidyNode->isAsp - Zwraca `TRUE` jeżeli bieżący węzeł jest kodem ASP

- tidyNode->isComment - Zwraca `TRUE` jeżeli bieżący węzeł jest komentarzem

- tidyNode->isHtml - Zwraca `TRUE` jeżeli bieżący węzeł to HTML

- tidyNode->isJste - Zwraca `TRUE` jeżeli bieżący węzeł jest kodem JSTE

- tidyNode->isPhp - Zwraca `TRUE` jeżeli bieżący węzeł jest kodem PHP

- tidyNode->isText - Zwraca `TRUE` jeżeli bieżący węzeł jest czystym tekstem (nie jest kodem)

### Właściwości

- value - wartość węzła (np.: tekst)

- name - nazwa znacznika (np. html, a, itd.)

- type - typ węzła (jedna z poniższych stałych, np. `TIDY_NODETYPE_PHP`)

- line* - linia w której zaczyna się węzeł

- column* - kolumna w której zaczyna się węzeł

- proprietary* - `TRUE` jeżeli węzeł wskazuje na niekompatybilny znacznik

- id - identyfikator ID znacznika (jeden z poniższych, np. `TIDY_TAG_FRAME`)

- attribute - tablica zawierająca argumenty bieżącego węzła, lub `NULL` jeżeli nie występują

- child - tablica zawierająca potomków węzłów uporządkowanych przez Tidy, lub `NULL` jeżeli nie występują

> Notatka: Właściwości oznaczone symbolem * są dostępne od PHP 5.1.0.

# Stałe predefiniowane

Poniższe stałe są zdefiniowane w tym rozszerzeniu i stają się dostępne, gdy rozszerzenie jest dokompilowane do PHP, lub załadowane dynamicznie przy starcie.

Każda stała `TIDY_TAG_XXX` reprezentuje znacznik HTML. Na przykład, `TIDY_TAG_A` reprezentuje znacznik < a href="XX">link</a>. Każda stała `TIDY_ATTR_XXX` reprezentuje atrybut HTML. Na przykład `TIDY_ATTR_HREF` reprezentuje atrybut HREF w poprzednim przykładzie.

Zdefiniowane są następujące stałe:

Tabela 2. znaczniki tidy

stała
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

Tabela 3. atrybuty tidy

stała
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

Tabela 4. typy węzłów tidy

stała | opis
--- | ---
TIDY_NODETYPE_ROOT | podstawowy węzeł
TIDY_NODETYPE_DOCTYPE | typ dokumentu
TIDY_NODETYPE_COMMENT | komentarz HTML
TIDY_NODETYPE_PROCINS | instrukcja przetwarzania
TIDY_NODETYPE_TEXT | tekst
TIDY_NODETYPE_START | znacznik otwierający
TIDY_NODETYPE_END | znacznik zamykający
TIDY_NODETYPE_STARTEND | pusty znacznik
TIDY_NODETYPE_CDATA | CDATA
TIDY_NODETYPE_SECTION | sekcja XML
TIDY_NODETYPE_ASP | kod ASP
TIDY_NODETYPE_JSTE | kod JSTE
TIDY_NODETYPE_PHP | kod PHP
TIDY_NODETYPE_XMLDECL | deklaracja XML

# Przykłady

Ten nieskomplikowany przykład pokazuje podstawowe użycie Tidy.

Przykład 2. Podstawowe użycie Tidy

`<?php ob_start(); ?> <html>przykładowy dokument html</html> <?php $html = ob_get_clean(); // konfiguracja Tidy $config = array( 'indent' => true, 'output-xhtml' => true, 'wrap' => 200); // Tidy $tidy = new tidy; $tidy->parseString($html, $config, 'utf8'); $tidy->cleanRepair(); // Output echo $tidy; ?>`

Poprzedni | Spis treści | Następny
tcpwrap_check | Początek rozdziału | ob_tidyhandler