Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: dzielenie strony do tablic i ich późniejsze poskładanie
Forum PHP.pl > Forum > PHP
tosiek
Witam. Próbuję skompresować wynikowy kod html, coś w stylu:
  1. function compress_html ($bufor){
  2. $start = strlen($bufor);
  3. $bufor = explode("\n", $bufor);
  4. $count = count($bufor);
  5. for ($i = 0; $i <= $count; $i++)
  6. {
  7. $bufor[$i] = trim($bufor[$i]);
  8. $bufor_wyjsciowy .= $bufor[$i];
  9. }
  10. $final = strlen($bufor_wyjsciowy);
  11. $kompresja = round(($start-$final)/$start*100, 2);
  12. $bufor_wyjsciowy .= "\n".'<!--compress-html Rozmiar nieskompresowany: '.$start.' bajtów, Skompresowany: '.$final.' bajtów Oszczednosc: '.$kompresja.'% -->';
  13. return $bufor_wyjsciowy;
  14. }
  15. ob_start("compress_html");

ale zbyt proste by było piękne smile.gif


Więc oczywiście wykracza się na tagach: pre|textarea|blockcode i niektórych script

Pierwszą myślą była zamiana \n nowej linii na cokolwiek np. <!--new-line--> i po trim spowrotem na \n, lecz pozostają tabulatory, spacje itp...

Więc tak się zastanawiam jak podzielić stronę na np kilka tablic:
1 - tagi html <> np. <p> z treścią
2. tagi <style>
3. tagi <script>
4. tagi pre|textarea|blockcode

Oczywiście tak aby dało się je spowrotem złożyć.

I jeszcze jakieś jeśli pominąłem smile.gif czy znasz może jakiś lepszy sposób / masz jakąś wskazówkę ?

Czy może znasz gotową funkcję ? Swoją drogą jak zamienić wiele spacji od dwóch w górę na jedną ?
Fifi209
Co do kompresji: ob_gzhandler

Co do pytania, jak podzielić na tablice: preg_match , preg_match_all
Fraza dla google: wyrażenia regularne
tosiek
tak nie wiem o istnieniu wyrażeń regularnych :|

a co do tego to bardziej użyteczne byłoby preg_split (na moje oko)

Tyle że przy preg match all ska mogę wiedzieć czy mam do czynienia z CSS, JS czy html ? Kolejne preg match ? przynajmniej kolejność byłaby znana winksmiley.jpg

I ciężko napisać jedno wyrażenie regularne co wykona taki podział.
Fifi209
Cytat(tosiek @ 8.08.2009, 21:52:00 ) *
tak nie wiem o istnieniu wyrażeń regularnych :|

To czemu zadajesz tak oczywiste pytania?

Cytat(tosiek @ 8.08.2009, 21:52:00 ) *
I ciężko napisać jedno wyrażenie regularne co wykona taki podział.

Brak komentarza.

Co do "dzielenia do tablic", powiedz mi tylko w jakim celu chcesz to zrobić...może jest lepszy sposób...
tosiek
Ponieważ potrzebuję tych danych oddzielnie po to aby potem każdy kdo CSS, JavaScript etc oddzielnie przerobić (czyli skompresować poprzez usuwanie białych znaków, nowych linii etc) nie chodzi mi o GZIP tylko o kompresję kodu winksmiley.jpg
Fifi209
Powiedz mi tylko co Ci da taka kompresja? Dalej nie rozumiem.
Będziesz ją wykonywał rozumiem wielokrotnie ?
tosiek
Cytat(fifi209 @ 8.08.2009, 23:00:11 ) *
Powiedz mi tylko co Ci da taka kompresja? Dalej nie rozumiem.
Będziesz ją wykonywał rozumiem wielokrotnie ?

Tak wielokrotnie i będę wywoływał całą funkcję poprzez ob_start.

Nie wszystko musi mieć powód winksmiley.jpg
wookieb
  1. preg_replace('/(\s)+/', '$1', $tekst);


Jak rozumiem, chcesz usunąć zbędne białe znaki (spacje, nowe linie, tabulatory) a ten kod zrobi ci to za jedny zamachem.

I taka mała uwaga. Strlen nie zwraca liczby bajtów dla stringa, tylko liczbę znaków a to nie to samo.
tosiek
Wookieb niestety nie można wszędzie usunąć nowych linii (odsyłam do dokumentacji np. <pre> w html 5) tak samo z niektórymi javascriptami winksmiley.jpg dlatego trzeba oddzielić te znaczniki.



O ile się nie mylę: 1 znak ASCII === 1 bajt ?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.