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 ?
rygiel
24.12.2007, 09:02:48
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ć
qrees
24.12.2007, 09:57:07
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 ?
Nie tylko pozamyka otwarte tagi, ale poprawi wiele innych błędów związanych z HTML.
Snowak
24.12.2007, 11:45:22
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.
Black-Berry
24.12.2007, 13:31:27
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.
wilman
25.12.2007, 13:44:02
dzieki
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.