Forum und email
Tidy

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 https://tidy.sourceforge.net/.

Instalacja

Tidy jest obecnie dostępne dla PHP 4.3.x i PHP 5 jako rozszerzenie PECL https://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 https://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

NazwaDomyślnieZmienianyDziennik zmian
tidy.default_config""PHP_INI_SYSTEMDostępna od PHP 5.0.0.
tidy.clean_output"0"PHP_INI_PERDIRDostę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

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łaopis
TIDY_NODETYPE_ROOTpodstawowy węzeł
TIDY_NODETYPE_DOCTYPEtyp dokumentu
TIDY_NODETYPE_COMMENTkomentarz HTML
TIDY_NODETYPE_PROCINSinstrukcja przetwarzania
TIDY_NODETYPE_TEXTtekst
TIDY_NODETYPE_STARTznacznik otwierający
TIDY_NODETYPE_ENDznacznik zamykający
TIDY_NODETYPE_STARTENDpusty znacznik
TIDY_NODETYPE_CDATACDATA
TIDY_NODETYPE_SECTIONsekcja XML
TIDY_NODETYPE_ASPkod ASP
TIDY_NODETYPE_JSTEkod JSTE
TIDY_NODETYPE_PHPkod PHP
TIDY_NODETYPE_XMLDECLdeklaracja 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;
?>

Spis treści
ob_tidyhandler --  ob_start callback function to repair the buffer
tidy_access_count --  Returns the Number of Tidy accessibility warnings encountered for specified document
tidy_clean_repair --  Execute configured cleanup and repair operations on parsed markup
tidy_config_count --  Returns the Number of Tidy configuration errors encountered for specified document
tidy::__construct --  Constructs a new tidy object
tidy_diagnose --  Run configured diagnostics on parsed and repaired markup
tidy_error_count --  Returns the Number of Tidy errors encountered for specified document
tidy_get_body --  Returns a tidyNode Object starting from the <body> tag of the tidy parse tree
tidy_get_config --  Get current Tidy configuration
tidy_get_error_buffer --  Return warnings and errors which occurred parsing the specified document
tidy_get_head --  Returns a tidyNode Object starting from the <head> tag of the tidy parse tree
tidy_get_html_ver --  Get the Detected HTML version for the specified document
tidy_get_html --  Returns a tidyNode Object starting from the <html> tag of the tidy parse tree
tidy_get_opt_doc --  Returns the documentation for the given option name
tidy_get_output --  Return a string representing the parsed tidy markup
tidy_get_release --  Get release date (version) for Tidy library
tidy_get_root --  Returns a tidyNode object representing the root of the tidy parse tree
tidy_get_status --  Get status of specified document
tidy_getopt --  Returns the value of the specified configuration option for the tidy document
tidy_is_xhtml --  Indicates if the document is a XHTML document
tidy_is_xml --  Indicates if the document is a generic (non HTML/XHTML) XML document
tidy_load_config --  Load an ASCII Tidy configuration file with the specified encoding
tidy_node->get_attr --  Return the attribute with the provided attribute id
tidy_node->get_nodes --  Return an array of nodes under this node with the specified id
tidy_node->next --  Zwraca następnego sąsiada bieżącego węzła
tidy_node->prev --  Zwraca poprzedniego sąsiada bieżącego węzła
tidy_parse_file --  Parse markup in file or URI
tidy_parse_string --  Parse a document stored in a string
tidy_repair_file --  Repair a file and return it as a string
tidy_repair_string --  Repair a string using an optionally provided configuration file
tidy_reset_config --  Restore Tidy configuration to default values
tidy_save_config --  Save current settings to named file
tidy_set_encoding --  Set the input/output character encoding for parsing markup
tidy_setopt --  Updates the configuration settings for the specified tidy document
tidy_warning_count --  Zwraca liczbę ostrzeżeń Tidy napotkanych w określonym dokumencie
tidyNode->hasChildren --  Returns true if this node has children
tidyNode->hasSiblings --  Returns true if this node has siblings
tidyNode->isAsp --  Zwraca prawdę jeżeli węzeł jest kodem ASP (Active Server Pages)
tidyNode->isComment --  Zwraca prawdę jeżeli węzeł jest komentarzem
tidyNode->isHtml --  Zwraca prawdę jeżeli węzeł jest częścią dokumentu HTML
tidyNode->isJste --  Zwraca prawdę jeżeli węzeł jest kodem JSTE (JavaScript Template Engine)
tidyNode->isPhp --  Zwraca prawdę jeżeli węzeł jest kodem PHP
tidyNode->isText --  Zwraca prawdę jeżeli węzeł jest czystym tekstem (nie jest kodem)
tidyNode::getParent -- zwraca rodzica bieżącego węzła