Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyrażenia regularne...
Kocurro
post
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...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
BzikOS
post
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}
Go to the top of the page
+Quote Post
Kocurro
post
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 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
Go to the top of the page
+Quote Post
bamboos
post
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 ?!?


--------------------
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: 20.08.2025 - 04:43