[php] Zamykanie znaczników

0

Witam. Potrzebuję skryptu, w php, który sprawdzi czy w zmiennej ze stringiem są pozamykane wszystkie znaczniki. Czyli jest coś takiego, że jesli są jakieś kawałki tekstu "[img]", to sprawdzi czy są wszystkie zamknięte "[\img]", a jeśli nie, to dopisze ich odpowiednią ilość na końcu. Tak samo ze znacznikami "[b] - [/b]" i kilkoma innymi. Może mi ktoś powiedzieć jak to zrobić?

0

Zliczasz ilość otwarć, a następnie ilość zamknięć. Jeśli któreś się nie zgadzają - dopisujesz.

0

No, ale właśnie nie wiem jak zliczyć ilość tych słów :\

0

przejżyj w manualu funkcje zaczynające się na str i preg

0

ech.. szukarka!
http://4programmers.net/Forum/viewtopic.php?id=86400
miało zostać wprowadzone do Coyote ale jakoś chętnego zbrakło ;)
pozostaje Ci na PHP przerobić, ale to już dasz radę

0

aby zliczyć proponuję zastosować wyrażenia regularne ;-)
zlicz sobie do tablicy a potem sprawdź ile jest znaczników otwarcia i tak samo końcowe.

preg_match_all('#(\[{1,1}.*[^\]]#', $str, $arr1)
preg_match_all('#(\[\/{1,1}.*[^\]]#', $str, $arr2)

pisane z palca więc moze nie działać ;-)

0

Prędzej

preg_match_all('#\[[^\]]+]#', $str, $arr1)
preg_match_all('#\[/[^\]]+]#', $str, $arr2)
0
dragon1985 napisał(a)
preg_match_all('#(\[{1,1}.*[^\]]#', $str, $arr1)
preg_match_all('#(\[\/{1,1}.*[^\]]#', $str, $arr2)

możesz mi wyjaśnić po co używasz zapisu:
1) {1,1}
2) [^]]
3) \/ (przy RegExp startującego od #)

Abstrahując od tego wątku, to Twój zapis jest równoznaczny z czytelniejszym:

preg_match_all('#(\[.*[^]]#', $str, $arr1)
preg_match_all('#(\[/.*[^]]#', $str, $arr2)
0

Wszystkie te kody kończą się tak, że w tym miejscu gdzie je dam, reszta strony jest wycinana :\

0
oprus napisał(a)

to sprawdzi czy są wszystkie zamknięte "[\img]", a jeśli nie, to dopisze ich odpowiednią ilość na końcu.
lepiej by było, żeby zamykał tam gdzie powinny być zamknięte, a nie na końcu

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0