Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Czyszczenie kodu html
piotr485
post
Post #1





Grupa: Zarejestrowani
Postów: 292
Pomógł: 0
Dołączył: 10.07.2009

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


Witam.

Mam zmieną $index a w niej całą zawartość strony

$index = '
<html>

<head>
<title>tytuł</title>
</head>

<body>
<div>tekst na stronie</div>
</body>

</html>
';

chciałbym usunąć spacje które są po za obszarami <>

czyli chciałbym uzyskać taki efekt

$index = '<html><head><title>tytuł</title></head><body><div>tekst na stronie</div></body></html>';

czy jest do tego jakaś gotowa funkcja w php ?

Z góry dziękuję za pomoc
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
Lord
post
Post #2





Grupa: Zarejestrowani
Postów: 239
Pomógł: 32
Dołączył: 10.03.2004

Ostrzeżenie: (10%)
X----


http://php.net/manual/en/function.str-replace.php
  1. // Order of replacement
  2. $str = "Line 1\nLine 2\rLine 3\r\nLine 4\n";
  3. $order = array("\r\n", "\n", "\r");
  4. $replace = '';
  5.  
  6. // Processes \r\n's first so they aren't converted twice.
  7. $newstr = str_replace($order, $replace, $str);
  8.  


Ten post edytował Lord 17.06.2016, 18:19:21
Go to the top of the page
+Quote Post
piotr485
post
Post #3





Grupa: Zarejestrowani
Postów: 292
Pomógł: 0
Dołączył: 10.07.2009

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


prawie działa z tym, że zostają spacje:

  1. <!DOCTYPE html><html lang="pl"> <head>


i z przodu zmiennej też jest kilka lini przerwy i po znakach również - funkcja trim niestety ich nie czyści, ktoś ma jakiś pomysł ?
Go to the top of the page
+Quote Post
trueblue
post
Post #4





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


  1. preg_replace('/^\s+|\n|\r|\s+$/','',$index);
Go to the top of the page
+Quote Post
LowiczakPL
post
Post #5





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

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


Kod
function czysc_html($html) {
    $search = array('/\>[^\S ]+/s', '/[^\S ]+\</s', '/(\s)+/s');
    $replace = array('>','<','\\1');
    $html = preg_replace($search, $replace, $html);
    return $html;
}
Go to the top of the page
+Quote Post
piotr485
post
Post #6





Grupa: Zarejestrowani
Postów: 292
Pomógł: 0
Dołączył: 10.07.2009

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


hmmm dziwne bo nadal zostają szpary


  1.  
  2.  
  3.  
  4.  
  5. <!DOCTYPE html><html lang="pl"> <head> <title>Tytuł strony</title> <meta charset="UTF-8">


nie mówiąc o tej przerwie początkowej na 5 lini
Go to the top of the page
+Quote Post
LowiczakPL
post
Post #7





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

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


a teraz

  1. function kompresuj_html($html) {
  2. $search = array('/\>[^\S ]+/s', '/[^\S ]+\</s', '/(\s)+/s');
  3. $replace = array('>','<','\\1');
  4. $html = preg_replace($search, $replace, $html);
  5. $html = str_replace('> <', '><', $html);
  6. return $html;
  7. }
Go to the top of the page
+Quote Post
piotr485
post
Post #8





Grupa: Zarejestrowani
Postów: 292
Pomógł: 0
Dołączył: 10.07.2009

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


jo teraz super tylko żeby usunąć jeszcze te wiersze początkowe i końcowe ...
Go to the top of the page
+Quote Post
com
post
Post #9





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


prościej było zapisać ten kod jak należy (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
LowiczakPL
post
Post #10





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

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


  1. function kompresuj_html($html) {
  2. $search = array('/\>[^\S ]+/s', '/[^\S ]+\</s', '/(\s)+/s');
  3. $replace = array('>','<','\\1');
  4. $html = preg_replace($search, $replace, $html);
  5. $html = str_replace('> <', '><', $html);
  6. $html = ltrim($html);
  7. $html = rtrim($html);
  8. return $html;
  9. }
Go to the top of the page
+Quote Post
piotr485
post
Post #11





Grupa: Zarejestrowani
Postów: 292
Pomógł: 0
Dołączył: 10.07.2009

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


o idealnie teraz z tym, że spacje i nowe linie z przodu <html i tyłu </html> się nie usuneły - dziwna sprawa
Go to the top of the page
+Quote Post
trueblue
post
Post #12





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


http://forum.php.pl/index.php?s=&showt...t&p=1194376
Go to the top of the page
+Quote Post
Crozin
post
Post #13





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


1. Zdajesz sobie sprawę, że wynikowy dokument HTML będzie różnił się (strukturalnie, nie w zapisie) od oryginału? A to będzie miało spory wpływ na np. wygląd strony.
2. Jeżeli robisz to w celu zmniejszenia wielkości dokumentu - wykorzystaj kompresję, np. GZIP.
Go to the top of the page
+Quote Post
piotr485
post
Post #14





Grupa: Zarejestrowani
Postów: 292
Pomógł: 0
Dołączył: 10.07.2009

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


Cytat(Crozin @ 19.06.2016, 02:16:06 ) *
1. Zdajesz sobie sprawę, że wynikowy dokument HTML będzie różnił się (strukturalnie, nie w zapisie) od oryginału? A to będzie miało spory wpływ na np. wygląd strony.
2. Jeżeli robisz to w celu zmniejszenia wielkości dokumentu - wykorzystaj kompresję, np. GZIP.


1. Nie rozumiem tego stwierdzenia - usuwają się tylko niepotrzebne spacje więc strona ma taki sam wygląd.
2. Zamiast robić echo to trzymam całą stronę w zmiennej i potem traktuje ją tą funkcją w celu optymalizacji - dokładnie tak - więc nie wiem po co by do tego wykorzystywać jakąś bibliotekę? (IMG:style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
viking
post
Post #15





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


Jeśli np usuniesz spacje pomiędzy elementami listy inline znikną odstępy.
Kompresję zazwyczaj ustawia się na poziomie konfiguracji serwera.
Go to the top of the page
+Quote Post
LowiczakPL
post
Post #16





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

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


Ja z automatu kompresuję wynikowy kod HTML i nie zauważyłem aby kiedykolwiek miało to jakikolwiek wpływ na wygląd strony.

Dodatkowo mam włączoną kompresję, plus expires plików.
Go to the top of the page
+Quote Post
viking
post
Post #17





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


  1. $html = '<p><span>testowy</span> <a href="#">link</a></p>';
  2. echo $html;
  3. echo kompresuj_html($html);


Gdzie kompresuj_html to post #10
Go to the top of the page
+Quote Post
Crozin
post
Post #18





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


@piotr485: http://www.oracle.com/technetwork/articles...ace-092897.html - dotyczy XML-a, ale HTML jest pod tym względem podobny. Dołącz do tego kwestie takie jak wyświetlanie bądź nie odstępów pomiędzy elementami liniowymi czy interpretowanie białych znaków przez CSS-owe właściwości typu white-space. Poza tym porównaj sobie wielkość skompresowanego GZIP-em (Google: Apache/Nginx/dowolny-serwer html gzip compression) "zaśmieconego" i ręcznie "oczyszczonego" HTML-a - zapewne różnice będą skrajnie małe. Na koniec: jeżeli już tak bardzo by Ci zależało na takim wyglądzie finalnego dokumentu zastanów się nad wykorzystaniem jakiegoś systemu szablonów operujących na XML-u. Weź pod uwagę fakt, że poniższy kod jest poprawnym HTML5 a wszystkie "optymalizatory" bazujące na wyrażeniach regularnych zmodyfikują Ci błędnie zawartość atrybutu title:
  1. <img src="image.png" title="some > image < xxx" alt="xx">
Go to the top of the page
+Quote Post
LowiczakPL
post
Post #19





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

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


<img src="image.png" title="some > image < xxx" alt="xx">

Moje eregi zostawiają Twój przykład w stanie nienaruszonym (IMG:style_emoticons/default/wink.gif)

---------------------------
Tu akurat się rozpędziłem i przegiąłem w linii 5, która jest do wywalenia bo ona popsuje niestety strony.

Cytat(viking @ 19.06.2016, 11:47:35 ) *
  1. $html = '<p><span>testowy</span> <a href="#">link</a></p>';
  2. echo $html;
  3. echo kompresuj_html($html);


Gdzie kompresuj_html to post #10


Ten post edytował LowiczakPL 19.06.2016, 15:16:33
Go to the top of the page
+Quote Post
com
post
Post #20





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


Już Ci napisałem, zapisuj to poprawnie i nie kombinuj, bo więcej kosztuje Cie prze-renderowanie tego niż uzycie sugerowanego gzipa albo zapisanie to bez zbędnych białych znaków, dodatkowo od czegoś jest heredoc/nowdoc (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 17:57