Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Preg_Replace - problem.
mcfreak
post
Post #1





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 30.01.2009

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


witam, mam taki sobie kod:

  1. ...
  2. $w = '[q]{x}[/q]';
  3. $w = str_replace('{x}','(.*?)', $w);
  4. $w ="/\"".$w."/";
  5. $mx = preg_replace($w,$ow,$mx); # linia 16


jednak wywala błąd:

CODE
Warning: preg_replace() [function.preg-replace]: Unknown modifier 'r' in ... on line 18


Co zrobić, żeby nie wywalało błędu? Jak skonstruować tą zmienną tak, aby działało:

  1. $w ="/\"".$w."/";


  1. Echo $w;
zwraca normalnie /\[q](.*?)[/q]/

McFreak.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
tehaha
post
Post #2





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


$string czy $pattern?
  1. <?php
  2.  
  3. $array_find = array('[', ']', '/', '*');
  4. $array_replace = array('\[', '\]', '\/', '\*');
  5.  
  6. $string = "xd [x]***{val}***[/x] (IMG:style_emoticons/default/haha.gif) ";
  7. $look_for = "[x]{val}[/x]";
  8.  
  9. $pattern = "/".str_replace($array_find, $array_replace, $look_for)."/";
  10. $pattern = str_replace('{val}','([^-]*)',$pattern);
  11. $replace = "<b>$1</b>";
  12.  
  13. echo preg_replace($pattern, $replace, $string);
  14. ?>


generalnie problem leży w tym że używasz znaki o specjalnym znaczeniu dla preg_match, dlatego przez str_replace podmieniamy np [ na \[ , * na \* i tam w array_find i array_replace musisz wstawić dla każdego znaku specjalnego taką podmianę
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.09.2025 - 18:09