Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] jak zamknąć otwarte tagi html?
wilman
post
Post #1





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 11.02.2007

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


Witam!
W jaki sposób mogę napisać funkcję, która sprawdzi, czy w podanym ciągu znajdują sie niezamknięte tagi html (np. takie jak <b>) i jeżeli takowe znajdzie, to zamknie je na końcu zmiennej ? smile.gif

Ten post edytował wilman 24.12.2007, 01:25:40
Go to the top of the page
+Quote Post
rygiel
post
Post #2





Grupa: Zarejestrowani
Postów: 17
Pomógł: 1
Dołączył: 26.11.2007
Skąd: Łódź

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


Pomysł fajny ale lepiej się nauczyć kontrolować siebie albo zaopatrzyć się w edytor który będzie to kontrolował.

w zasadzie alg jest prosty, do tego jeszcze trzeba wyr. regularnych użyć


--------------------
Programista PHP
Go to the top of the page
+Quote Post
qrees
post
Post #3





Grupa: Zarejestrowani
Postów: 275
Pomógł: 44
Dołączył: 23.11.2007

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


Cytat(wilman @ 24.12.2007, 01:24:51 ) *
Witam!
W jaki sposób mogę napisać funkcję, która sprawdzi, czy w podanym ciągu znajdują sie niezamknięte tagi html (np. takie jak <b>) i jeżeli takowe znajdzie, to zamknie je na końcu zmiennej ? smile.gif


A ja proponuje zajrzeć tutaj: http://pl2.php.net/manual/en/ref.tidy.php

Nie tylko pozamyka otwarte tagi, ale poprawi wiele innych błędów związanych z HTML.
Go to the top of the page
+Quote Post
Snowak
post
Post #4





Grupa: Zarejestrowani
Postów: 78
Pomógł: 2
Dołączył: 13.12.2007

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


Nie każdy ma możliwość dodania paru bibliotek. Wyciągnij sobie pregiem wszystkie tagi otwierające a później sprawdzaj poprzez substr_count czy ilość tagów otwierających dany tag = ilość tagów zamykających dany tag, a jeżeli nie to dopisz tyle zamykających ile brakuje.
Go to the top of the page
+Quote Post
Black-Berry
post
Post #5





Grupa: Zarejestrowani
Postów: 663
Pomógł: 6
Dołączył: 3.06.2007
Skąd: Kraków

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


Takie coś (jeśli zależy ci na profesjonalnym rozwiązaniu) robi się za pomocą stosu. Podaję opisowy algorytm:
  • 1. Wyszukujesz znak "<"
  • Jeśli przed zakończeniem ">" nie występuje znak "/" (np. <br/>) to wstawiasz to co pomiedzy "<" a ">" na stos.
  • 3. Jeśli napotkasz tag konczoncy "</" wtedy to co pomiedzy "</" a ">" usuwasz ze stosu. Jeśli element na stosie nie odpowiada nowo znalezionemu elementowi kończącemu oznacza to błąd zamknięcia w tym miejscu.

Nie jest to kompletny algorytm ale idea zachowana. Jesli to rozbudujesz będziesz miał dość dobry walidator niezamkniętych tagów.

Pozdrawiam.


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





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 11.02.2007

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


dzieki smile.gif
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: 19.08.2025 - 19:30