Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyrażenia regularne...
Forum PHP.pl > Forum > PHP
Kocurro
Piszę coś w rodzaju systemu obsłudi szablonów...i potrzbuję pomocy...

mam coś takiego...

{a {b} a}

chodzi o to, by funkcja callback( korzystam z preg_replace_callback) otrzymywała jako argument to co sieznajduje pomiędzy zewnętrnzymi klamrami (czyli aby otrzymywała a {b} a)...to wywołanie co ja wykombinowałem do funkcji callback daje mi tylko b i w efekcie otrzymuje {a coś_za_b a}...

często będą u mnie wykorzystywane konstrukcje typu :

{a {b {c} {d} {e} b} {f} {g {h} {i {j} i} {k} g} a}

jednymi słowy zagnieżdzenie na zagnieżdzeniu....

jeśli mozecie to podrzućcie jakiś prosty przykładzik jak to zrobić...

tylko proszę nie mówić mi bym korzystał ze smartów lub coś takiego...gdyż szablony mam już wykonane, one działały wcześniej na jakimś systemie a teraz muszę przygotować system który je obsłuży...

z góry dzięki za pomoc...
BzikOS
Przeniesione z php Początkujący.

Zobacz sobie ostatni temat w tym wątku. Nie jest to co prawda na regexp'ach, ale może Ci się przydać.

btw. co regexp w takim razie miałby wydobywac z takich zagnieżdżeń jak podałeś?
Kod
{a {b {c} {d} {e} b} {f} {g {h} {i {j} i} {k} g} a}
Kocurro
BzikOS...mi ogólnie chodzi o to jak takie rzeczy wykonać...

to ma być system obsługi szablonów (czyli parsowanie plików tpl zapisanych w specjalnym formacie)...

wyrażenia miałyby wydobywać to co znajduje się kolejno pomiedzy { i } na zasadzie rekurencji...najpeirw ten zewnętrzny, potem procedurka by parsowała to co w środku jeśli trafiła znowu na { i } top by była ponownie wywoływana i parsowała zawartość tych linii....

a może łatwiej by bło to przerobić na kod php i potem eval questionmark.gif jeśli tak to może ktoś mi podać kod wycinający z tekstu znaczniki <? i ?> wraz z tym co znajduje się w środku questionmark.gif
bamboos
Witam!!
Musisz użyć tu instrukcji warunkowej:
Kod
(?(?=...)...|...)

Mądrzę się, ale nie mam pojęcia jak to działa;P
Kod
(?(?[operatory porównania]z czym porównywać)true|false)

Chyba coś na tej zasadzie... I preg musiał by działać na zasadzie:
Jeśli w ciągu pasującego strinka znajdziesz '{' to najpierw szukaj '}' a dopiero potem zamykającego '}'. Jest to jednak jak dla mnie czarną magią ;P Może pomyśl o innej konstrukcji bloków ?!?
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.