PDA

Pogčedajte punu verziju : Kako automatski optimizovati HTML kod?


Pedja
06. 08. 2007., 20:30
Zna li neko da li postoji kakva gotova funkcija koja prihvati HTML kod i optimizuje ga izbacujuci nepotrebne razmake, tabove, nove redove i slican visak?

To mi treba da kada iz php-a izgnereisem HTML, da ga ocistim pre nego sto posaljem klijentu.

Na netu uglavnom nalazim ili funkcijekoje rad eparsiranej da bi zatitili unos korsinika (obucno u komentarima na sajtu) ili referencena HTMLTidy koji mi je neprihvatljuivo resenje jer mora da se dodatno instalira na server.

dinke
06. 08. 2007., 21:08
Meni je prvo pao na pamet php tidy (http://www.php.net/tidy) (postoji lep api za php), a ako vec ne mozes da ga koristis, mozda da se malo poigras sa regexp-om?


//uklonis prvo sve visestruke spaceove svuda u html-u i zamenis jednostrukim
$string = preg_replace("/(\s+)/", " ", $string);

//Uklonis spaceove izmedju tagova
$string = preg_replace("/(>)\s+(<)/", "\\1\\2", $string);
//echo $string;

Ilija Studen
06. 08. 2007., 21:15
Nije direktan odgovor na pitanje, ali je blizu:

Osetno smanjenje protoka se može dobiti serviranjem GZipovanog sadržaja - pogledati: ob_gzhandler (http://www.php.net/manual/en/function.ob-gzhandler.php).

PHP tu radi većinu posla tako da je stvarno lako za implementaciju.

ivanhoe
07. 08. 2007., 01:10
mozda da se malo poigras sa regexp-om?


//uklonis prvo sve visestruke spaceove svuda u html-u i zamenis jednostrukim
$string = preg_replace("/(\s+)/", " ", $string);

//Uklonis spaceove izmedju tagova
$string = preg_replace("/(>)\s+(<)/", "\\1\\2", $string);
//echo $string;


drugi regexp moze da bude $string = preg_replace('/>\s+</', '><', $string); nema potrebe hvatati u memoriju znake koje vec znas koji su.

a mozes i da obrises HTML komentare: $string = preg_replace('/<!--.+?-->/', '', $string);

samo pazljivo sa ovim regexpima ako nije cist html (tipa ako imas javascript negde)

dinke
07. 08. 2007., 10:13
drugi regexp moze da bude $string = preg_replace('/>\s+</', '><', $string); nema potrebe hvatati u memoriju znake koje vec znas koji su.

Apsolutno se slazem, ja sam prvo taj i napisao, ali kada sam probao kod mene na compu sa nekim html stringom nesto nije radio kako treba. Onda sam promenio u taj drugi koji hvata tagove i radilo je. Moguce je da sam negde bio omanuo, posto sam sada ponovo probao i sada radi :)

Pedja
07. 08. 2007., 11:33
Osetno smanjenje protoka se može dobiti serviranjem GZipovanog sadržaja

To se podrazumeva.


samo pazljivo sa ovim regexpima ako nije cist html (tipa ako imas javascript negde)


Zbog toga sam i pitao, mada razmisljam, ne znam gde bi mogao da se pojavi tab ili visestruki space, a da je to korisno...