Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php]Poprawienie systemu szablonów zamiast {ZMIENNA} żeby było {_ZMIENNA_}, Jak pooprawić wyrażenie regularne?
kukix
post
Post #1





Grupa: Zarejestrowani
Postów: 600
Pomógł: 2
Dołączył: 1.09.2002
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Witam.

Tworze strony internetową na podstawie systsmu szablonów, który znalałżem kiedyś na jakimśportalu.

Problem w tym, że nie mogę dodac żadnego kodu JavaScript, ponieważ wszystko pomiędzy znakami { i } jest wycinane.

Wpadłem na pomysł, żeby poprawić wyrqażnie regularne, żeby zmienne były trzymane nie w samych nawiasach, ale jeszcze z podkreślnikami {_ i _}

Czyli zamiast {ZMIENNA} żeby musiało być {_ZMIENNA_}


Kawałek kodu z wyrażneiem regularnym wygląda tak:

  1. if(preg_match_all('#\{(.*?)\}#is', $this -> compiled, $found)){
  2. foreach($found[1] as $match){
  3. $match_table[] = '\'.'.$this -> generate_block_ref($match).'.\'';
  4. }
  5. $this -> compiled = str_replace($found[0], $match_table, $this -> compiled);
  6. }


Bede wdzięczny za wszelkie wypowiedzi.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Uriziel01
post
Post #2





Grupa: Zarejestrowani
Postów: 307
Pomógł: 37
Dołączył: 9.11.2010
Skąd: Zielona Góra

Ostrzeżenie: (0%)
-----


Rozumiem że nazwy tych zmiennych zawierają same litery ewentualnie cyfry, ogólnie znaki alfanumeryczne. Chyba najlepszym rozwiązaniem będzie dodanie do reguły zastrzeżenia aby parsowała tylko w przypadku gdy pomiędzy klamrami sa jedynie takie znaki, automatycznie znak nowej średnika wyeliminuje taką `zmienną`. Odpowiada ci takie rozwiazanie ?

EDIT:
Tak na szybko:
Kod
'#\{([a-zA-Z0-9]*?)\}#is'


To powinno załatwić sprawę.

Ten post edytował Uriziel01 25.01.2012, 15:06:04
Go to the top of the page
+Quote Post
kukix
post
Post #3





Grupa: Zarejestrowani
Postów: 600
Pomógł: 2
Dołączył: 1.09.2002
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Cytat(Uriziel01 @ 25.01.2012, 16:59:00 ) *
To powinno załatwić sprawę.


Dziekie wielkie za fatygę.. przeczytałem cały temat wskazany przez by_ikar i tam po prostu dodawany jest znacnzik {IGNORE} jest to jednak kłopotliwe rozwiązanie..

Przeglądne całą stronę i poszukam znaczników jakie używałem, prawdopodobnie Twoje rozwiązanie będzie idealne..


Jeżeli doam na końcu \-_. to będzie akceptował również podkreślniki i kropki?? Czy jest to poprawny zapis?


Kod
'#\{([a-zA-Z0-9\-_.]*?)\}#is'



Ten post edytował kukix 25.01.2012, 15:46:16
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 18:41