Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> wyr. regularne i bardziej skomplikowany ciąg, preg_replace
czachor
post 2.01.2005, 21:52:17
Post #1





Grupa: Zarejestrowani
Postów: 897
Pomógł: 40
Dołączył: 16.12.2003
Skąd: Warszawa

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


Wtam! Mam taki kod:
  1. <?php
  2. class change
  3. {
  4. var $string;
  5. var $result;
  6. var $vars;
  7.  
  8. function change($string)
  9. {
  10. $this -> string = $string;
  11. $this -> result = NULL;
  12. $this -> vars = array();
  13. }
  14.  
  15.  
  16. function replace()
  17. {
  18. $this -> result = preg_replace(&#092;"/{(S+)}/e\", \"$this-> 1\", $this -> string);
  19. echo $this -> result;
  20. }
  21.  
  22.  
  23. function insert_var($name, $value)
  24. {
  25. $this -> {$name} = $value;
  26. }
  27. };
  28.  
  29. //Przykład użycia
  30. $string = 'Cześć {name} co porabiasz w {day}';
  31.  
  32. $change = new change($string);
  33. $change -> insert_var('name', 'Waluś'); //wstawienie wartości zmiennych
  34. $change -> insert_var('day', 'środę');
  35. $change -> replace();
  36. //Zwróci oczywiście
  37. //Cześć Waluś co porabiasz w środę
  38. ?>

Niestety przy ciągach typu
Kod
Cześć} } {name4} bl{name} a{ df {name22} {{{sdf} {blah}
całość się wywala... W wyrażeniach regularnych jestem jeszcze słaby, dlatego proszę o Waszą pomoc, w jaki sposób przetworzyć podany string... ohmy.gif
Z góry dzięki!


--------------------
how many SEO experts does it take to change a light bulb,lightbulb,light,bulb,lamp,lighting,switch,sex,xxx
5-Reasons-why-you-should-NEVER-fix-a-computer-for-free
Go to the top of the page
+Quote Post
crash
post 2.01.2005, 21:59:10
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 196
Pomógł: 2
Dołączył: 17.01.2004
Skąd: Sosnowiec

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


Użyj wyrażenia: /\{([a-zA-Z0-9]+)\}/e


--------------------
Go to the top of the page
+Quote Post
czachor
post 2.01.2005, 23:14:24
Post #3





Grupa: Zarejestrowani
Postów: 897
Pomógł: 40
Dołączył: 16.12.2003
Skąd: Warszawa

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


Dzięki! Działa.

-UPDATE
Hmm... nie do końca sad.gif
Bo jeżeli będzie np. tak:
  1. <?php
  2. $string = 'Cześć} } {name4} bl{name} a{ df {name22} {{{sdf} {blah}';
  3.  
  4. $change = new change($string);
  5. $change -> insert_var('NAME', 'jakies imie');
  6. $change -> insert_var('NAME22', 'inne imie');
  7. $change -> replace();
  8. ?>

czyli u góry zmienne pisane małymi, u dołu dużymi literami, to zasadniczo nic nie powinno się stać (czyli zwrócić ciąg bez zmian), tymczasem dostaję
Kod
Cześć} } bl a{ df {{


Tak samo nie wiem jak zrobić, żeby niezdefiniowanych zmiennych (np. w tym przykładzie {name4}) nie ruszało...


--------------------
how many SEO experts does it take to change a light bulb,lightbulb,light,bulb,lamp,lighting,switch,sex,xxx
5-Reasons-why-you-should-NEVER-fix-a-computer-for-free
Go to the top of the page
+Quote Post
hwao
post 3.01.2005, 08:15:00
Post #4


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




zaden system szablonow nie obbsluguje pustych } {} {}{} {}{{ }} i tak dalej poprostu ich sie zwobodnie nie daje chyba ze w {literal} albo zajstepuje np {prawy} i on wtedy jest podnieniany w paserze na }
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 Wersja Lo-Fi Aktualny czas: 20.04.2024 - 04:07