![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 207 Pomógł: 44 Dołączył: 18.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Tworząc mały system template natrafiłem na problem związany z wyrażeniami regularnymi. Przetwarzam sobie taki plik: Instrukcje mam zamknięte w {% i %} i wszystko działa ładnie, konwertuje sobie toto do wykonywalnych plików php. Problemy zaczęły się podczas przetwarzanie warunków IF. Otóż wyrażeniem: ładnie wyłapuje to co jest w nawiasach ale teraz muszę to przetworzyć więc ciąg znaków: muszę zamienić na (przykładowo) Mój problem polega na skonstruowaniu wyrażenia wyłapującego ciągi znaków alfanumerycznych ale tylko takich które nie są zamknięte w apostrofach (w systemie abc ma oznaczać zmienną a 'abc' ciąg znaków, 123 to wartość liczbowa), oczywiście ciągi OR i AND będą pomijane w zamianie... Jakieś sugestie jak ugryźć takie wyrażenie? Edit: Przepraszam wkradł się błąd, przekształcone wyrażenie powinno wyglądać następująco: (= zamienione jest na ==, tez tego powyższego +) Pozdrawiam Ten post edytował maniana 14.10.2010, 14:11:05 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
zamiast tak kombinowac i miec z tego plusy masz same minusy to jak juz chcesz uzywas alternatywnej skladni to uzywaj:
Kod {%if($a=='12' OR ($b=='abc' AND $c+='cba'))%}Wykonanie warunku{%/if%} Czyli tak rob skladnie zebys nie musial konwertowac twojego "jezyka" na php (IMG:style_emoticons/default/snitch.gif) |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 207 Pomógł: 44 Dołączył: 18.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
No właśnie to było by za łatwe.
Tutaj chodzi o to by zostawić tylko pożądane elementy tego mojego "języka", w systemie template'sów mam zamiar odciąć się od PHP i przepuszczać tylko niektóre składnie (if, switch, for, include oraz niektóre operacje na tekście), wszystko po to by jak najbardziej odseparować szablony od silnika. Zauważ, że jest to bezpieczne zagranie bo wszystkie niedozwolone w szablonach rozkazy będą zamieniane na zmienne. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Mało systemów szablonów masz? :| Zobacz jak to robią inni.
Ja osobiście nie widzę potrzeby wynajdywania koła na nowo. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 207 Pomógł: 44 Dołączył: 18.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Cóż, systemów jest sporo, to prawda. Nie chce jednak używać czegoś z zewnątrz z uwagi na to, że jest to element większej aplikacji wchodzącej w skład pracy dyplomowej. Tak to sobie wymyśliłem, natknąłem się na problem i muszę go rozwiązać (z waszą pomocą). Sugestie bym wybrał gotowe rozwiązania tego problemu nie rozwiązują. Tu nie chodzi o to czy tworzenie nowego systemu szablonów ma sens czy nie tylko o to: Jak za pomocą wyrażeń regularnych wyciągnąć ciąg znaków alfanumerycznych nie zamkniętych w apostrofach (IMG:style_emoticons/default/smile.gif)
Pozdrawiam No i jest rozwiązanie, kolega Miwol, szybko, w kilku krokach doszedł do czegoś takiego: W pierwszym wyrażeniu zamieniamy znaki porównania w drugim wyszukujemy 'zmienne'. Pozdrawiam Ten post edytował maniana 14.10.2010, 22:03:40 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 16.09.2025 - 03:31 |