Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> dzielenie strony do tablic i ich późniejsze poskładanie
tosiek
post
Post #1





Grupa: Zarejestrowani
Postów: 142
Pomógł: 0
Dołączył: 7.07.2008

Ostrzeżenie: (0%)
-----


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ą ?

Ten post edytował tosiek 8.08.2009, 19:08:12


--------------------
Go to the top of the page
+Quote Post
Fifi209
post
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Co do kompresji: ob_gzhandler

Co do pytania, jak podzielić na tablice: preg_match , preg_match_all
Fraza dla google: wyrażenia regularne


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
tosiek
post
Post #3





Grupa: Zarejestrowani
Postów: 142
Pomógł: 0
Dołączył: 7.07.2008

Ostrzeżenie: (0%)
-----


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ł.


--------------------
Go to the top of the page
+Quote Post
Fifi209
post
Post #4





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


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...


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
tosiek
post
Post #5





Grupa: Zarejestrowani
Postów: 142
Pomógł: 0
Dołączył: 7.07.2008

Ostrzeżenie: (0%)
-----


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


--------------------
Go to the top of the page
+Quote Post
Fifi209
post
Post #6





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Powiedz mi tylko co Ci da taka kompresja? Dalej nie rozumiem.
Będziesz ją wykonywał rozumiem wielokrotnie ?


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
tosiek
post
Post #7





Grupa: Zarejestrowani
Postów: 142
Pomógł: 0
Dołączył: 7.07.2008

Ostrzeżenie: (0%)
-----


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


--------------------
Go to the top of the page
+Quote Post
wookieb
post
Post #8





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




  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.

Ten post edytował wookieb 8.08.2009, 22:18:19


--------------------
Go to the top of the page
+Quote Post
tosiek
post
Post #9





Grupa: Zarejestrowani
Postów: 142
Pomógł: 0
Dołączył: 7.07.2008

Ostrzeżenie: (0%)
-----


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 ?

Ten post edytował tosiek 9.08.2009, 10:56:17


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 16:05