Funkce ob_start a PHP Tidy

Pomocí funkce ob_start můžeme nejen komprimovat webové stránky, ale je také možné si uklidit zdrojový HTML kód. Jak na to?

V článku Komprimace a buffer webových stránek bylo řečeno, kde je sladké ovoce. Když už máme celou webovou stránku v nějakém bufferu, proč si s tím trochu nepohrát a např. neuklidit zdrojový kód? Kromě zajištění validity se v tom také potom někdo vyzná, až to bude prohlížet. Např. vy. Postup:

  1. rozklepneme 2 vajíčka, rozdělíme bílky a žloutky;
  2. zajistíme, aby nám na našem serveru běhala PHP extenze Tidy (pokud máme pravý domácí webový server, není co řešit, jinak je třeba psát na podporu hostingu, pokud to tam neběhá);
  3. stačí pak funkci ob_start spustit s „doplňkovou“ callback funkcí, která nám zajistí Tidy přeformátování kódu. Přímo ve svazečku s ob_start() existuje callback funkce ob_tidyhandler(), přijde mi ale maximálně debilní, protože parametry pro Tidy u této funkce se upravují v nějakém externím souboru v rámci serveru (a případně v php.ini), což není zrovna každému přístupné. Mně osobně přijde lepší si vytvořit vlastní callback funkci, kde se dá vše nastavit na jednom místě a dle vlastních chutí.
if (!ob_start("ob_gzhandler"))
	ob_start(); // GZIP komprese + ošetření, kdyby nebyla nainstalována
if (extension_loaded("tidy")) // jestliže je nainstalováno Tidy
{
	function tidy($buffer)
	{
		$config = array('indent' => true, 'output-xhtml' => true, 'wrap' => 200, 'tidy-mark' => false);
		$tidy = tidy_parse_string($buffer, $config, 'UTF8');
		$tidy->cleanRepair();
		return $tidy;
	}
	ob_start("tidy");
}

//
// sem nějaké HTML / PHP vašich webových stránek
//

ob_end_flush(); // konec srandy, spláchnout a vysmrknout

Výsledkem webové stránky, která je takto „obalena“, by mělo být nejen rychlejší načítání díky kompresi, ale také validní a pěkně naformátovaný kód s odsazením:

<!-- před -->
<html>
<head>
<title>nevalidní a ošklivé</title>
</head>
<body>
<p>test string
</i>
</body>
</html>

<!-- po -->
<html>
  <head>
    <title>validní a přehledné</title>
  </head>
  <body>
    <p>test string</p>
  </body>
</html>

Jediné upozornění: pro testování doporučuju PHP Tidy část vypnout. Lépe potom najdete nevalidní části ve svém kódu a opravíte je přímo. PHP Tidy je jen pojistka, neměla by zachraňovat neschopnost psát validně.

Vyvěšeno v PHP prakticky, Tvorba webových stránek a oštítkováno , , . Přidat si do záložek permalink. Přidat komentář nebo zanechat trackback: trackback URL.

Přidat komentář

Váš email nebude nikdy zveřejněn. Povinná pole jsou označena *

*
*

Můžete použít HTML značky a atributy: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>