![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 461 Pomógł: 32 Dołączył: 17.09.2003 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
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... |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 660 Pomógł: 0 Dołączył: 28.08.2002 Skąd: Starachowice Ostrzeżenie: (0%) ![]() ![]() |
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}
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 461 Pomógł: 32 Dołączył: 17.09.2003 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
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 ![]() ![]() |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 115 Pomógł: 0 Dołączył: 3.05.2003 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
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 ?!? -------------------- pozdrawiam bamboos
http://piorun.ds.pg.gda.pl/~ronek/log/jedyne.wma |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 04:43 |