RkBlog

Hardware, programming and astronomy tutorials and reviews.

Tidy

Tidy to rozszerzenie do PHP (Tidy 2.0 dla PHP 5.* i Tidy 1.0 dla PHP 4.3.*) korygujące m.in. kod HTML, XHTML czy też XML tak by był on zgodny ze standardami. Wersja dla PHP 4.** jest znacznie uboższa w możliwości niż ta dla PHP 5 a opisywane tutaj opcje tego rozszerzenia bazują na Tidy w PHP 5.

Korygowanie kodu strony www

Pierwsza możliwość - korekcja kodu w łańcuchu:
<?php
$tidy = tidy_parse_string($kod, array('output-xhtml' => 1, 'alt-text' => ''), 'UTF8');
tidy_clean_repair($tidy);
echo $tidy;
Gdzie $kod to łańcuch z kodem HTML/XHTML do korekcji. Funkcja tidy_parse_string($kod, array('output-xhtml' => 1, 'alt-text' => ''), 'UTF8'); jest dość rozbudowana. Pierwszym argumentem jest łańcuch, drugi to tablica z konfiguracją, a trzeci - kodowanie, dozwolone to latin1, raw, utf8, iso2022, mac, win1252, utf16le itd. Nie ma latin2 ani iso8859-2 :) [Niektórzy się zastanawiają dlaczego RkCMF korzysta z UTF-8]. Podobną funkcją jest tidy_parse_file - pierwszym argumentem jest ścieżka do pliku.

Jeżeli mamy prosty CMS/stronę w PHP5 to możemy skorzystać z bufora współpracującego z tidy:
<?php
ob_start('ob_tidyhandler');
echo 'Treść <B>strony</b> :) co będzie poprawiona';


Instalacja tidy

W przypadku linux/unix instalacja tidy jest dość prosta, wystarcz skompilować PHP z opcją --with-tidy (./configure --help dla pełnego poprawnego parametru). W przypadku niektórych dystrybucji pakiety PHP są rozbite i wystarczy wyszukać ten od tidy. Oprócz samego dodatku do PHP będziemy pewnie musieli zainstalować pakiet "htmltidy" (lub o podobnej nazwie) jako zależność. Dla serwerów pod MS Windows - pobieramy bibliotekę dll z www.snaps.php.net/win32/PECL_STABLE/ (php_tidy.dll), który umieszczamy w katalogu z rozszerzeniami (wyszukaj podkatalog serwera w którym są pliki *.dll) a w php.ini dodajemy do listy rozszerzeń: extension=php_tidy.dll . Jeżeli serwer działa to go restartujemy. Artykuł o Tidy pojawił się w PHP Solutions (5/2004).
RkBlog

PHP w Akcji, 14 July 2008, Piotr Maliński

Comment article