Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wyrażenia regularne
Forum PHP.pl > Forum > PHP
lDoran
Witam mam problem ze zrozumieniem poniżej zamieszczonej metody, a dokładnie jak działa wyrażenie: '/{([^}]+)}/e' oraz '$this->dane["\\1"]'
  1. function execute() {
  2. return preg_replace('/{([^}]+)}/e', '$this->dane["\\1"]',
  3. $this->tmpl);
  4. }


Poniżej zamieszczam pełną klasę:
  1. <?php
  2. class Template {
  3. var $tmpl;
  4. var $dane;
  5.  
  6. function Template ($name)
  7. {
  8. $this->tmpl = implode('', file($name));
  9. $this->dane = Array();
  10. }
  11.  
  12. function add($name, $value = '')
  13. {
  14. if (is_array($name)) {
  15. $this->dane = array_merge($this->dane, $name);
  16. } else if (!empty($value)) {
  17. $this->dane[$name] = $value;
  18. }
  19. }
  20.  
  21. function execute() {
  22. return preg_replace('/{([^}]+)}/e', '$this->dane["\\1"]',
  23. $this->tmpl);
  24. }
  25.  
  26. }
  27. ?>


Skrypt pochodzi ze strony: http://www.programuj.com/artykuly/www/template.php
cycofiasz
Za pewne podmienia {jakas_nazwa_zmiennej} na wartość z tablicy $dane gdzie kluczem jest ów jakas_nazwa_zmiennej
lDoran
tak jak mówisz tylko nie rozumiem dlaczego wyrażeniu regularnym ^ jest w środku po co jest [ nawiasy klamrowe i co robi /e
kolejny problem, który mnie trapi $this->dane["\\1"] co robi: \\1
pierwszy raz coś takiego widzę, dlatego pytam poszukiwałem w googlu informacji na ten temat jednak nie znalazłem
cycofiasz
Czyli podstawy wyrażeń regularnych, polecam zapoznać się z jakimkolwiek kursem / artykułem na ich temat.

^ w nawiasie kwadratowym oznacza przeczenie zakresu znaków, w tym przypadku dotyczy ono } więc wewnątrz dopasowywanego tekstu nie może być znak }

Co do reszty pytań, to odpowiedzi na nie znajdziesz pod adresem http://pl2.php.net/preg_replace
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.