Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> str_replace lub cos podobnego, Tylko jeden raz..
SHiP
post
Post #1





Grupa: Zarejestrowani
Postów: 697
Pomógł: 47
Dołączył: 19.12.2003
Skąd: Lublin

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


Mam problem z wyrażeniami regularnymi ;] Za pomocą preg_mach_all odnajduje wszystkie ciągi do zmiany, nastepnie montuje pętelke i za pomocą str_replace podmieniam co się da. Wszystko działa pięknie dopuki nie mam do zamiany czegoś w stylu...

Kod
bla => cos tam
ble => cos tam 2
blacha => bardzo fajne
meble => po prostu extra


Co się dzieje... najpierw skrypt odnajduje i podmienia wszystkie bla tak więc z mojej blachy pozostaje
Kod
costamcha

Nastepnie podmienia wszystkie ble na cos tam i z moich mebli zostaje ;]
Kod
mecos tam 2

A niestety o coś takiego mi nie chodziło ;] Czy ktoś może zna sposób aby uniknąć tego typu akcji? Czy da się ograniczyć działanie funkjcji str_replace do jednej podmiany? Byłbym wdzięczny za jakiekolwiek wskazówki...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
SHiP
post
Post #2





Grupa: Zarejestrowani
Postów: 697
Pomógł: 47
Dołączył: 19.12.2003
Skąd: Lublin

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


  1. <?php
  2. private function replaceVars($param) // funkcja wyszukuje i konwertuje zmienne w parametrach funkcji
  3. {
  4. if(strpos($param,'$')===false) return $param; // jesli nie ma zmiennych zwroc to co jest...
  5.  
  6. preg_match_all('#$([a-zA-Z0-9_]+)#is', $param, $vars);
  7. rsort($vars[1]);
  8.  
  9. for($i=0, $n=count($vars[1]); $i<$n; $i++)
  10. {
  11. /* ten kod obsluguje sekcje dla was nie ważne ;)
  12. $ln=strpos($vars[1][$i],'[');
  13. if($ln) $arrayName =substr($vars[1][$i],1,$ln); else $arrayName=$vars[1][$i];
  14. $sectionId = array_search($arrayName,$this -> section_name);
  15. if($sectionId) $param = str_replace('$'.$vars[1][$i],'$this -> vars[''.$vars[1][$i].''][$i'.$sectionId.']',$param);
  16. else */
  17.  
  18. $param = str_replace('$'.$vars[1][$i],'$this -> vars[''.$vars[1][$i].'']',$param);
  19.  
  20. }
  21. return $param;
  22. }
  23. ?>


Tak to działa... jako $param do funkcji przekazuje ciąg zawierający zmienne np...
Kod
bla bla $zmienna bla bla bla $zmie $z $zmien sdf


Teraz zamieniam to na
Kod
bla bla $this -> vars['zmienna'] bla bla bla $this -> vars['zmie'] $this -> vars['z'] $this -> vars['zmien'] sdf


Po więcej szczegółów zapraszam na Inny temat na php.pl (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
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: 26.12.2025 - 16:16