Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z funkcją str_replace();
Forum PHP.pl > Forum > PHP
quex
Witam szanownych forumowiczów.
Mam problem z fukncją zamieniającą str_replace();. Na początek przedstawie kawałek kodu:
  1. <?
  2. ...
  3. $text = str_replace (&#092;";X\", \" <img src=\"img/emotikony/icon_mad.gif\" border=\"0\" alt=\";X\">\", $text);  
  4. ...
  5. ?>


I teraz pojawia się problem, bo jak wkleje np. "sdsds&amp;X", to wstawi mi tam emota. Oczywiście można to obejść dając:
  1. <?
  2. ...
  3. $text = str_replace (&#092;"_;X_\", \" <img src=\"img/emotikony/icon_mad.gif\" border=\"0\" alt=\";X\">\", $text);  
  4. ...
  5. ?>

(_ to spacja)

ale czy nie ma innego sposobu?

Najlepiej, gdyby nie zamieniało emotikonek zawartych pomiędzy
Kod
[CODE] i
[/CODE]

Proszę o pomoc - quex.

----------------------------- ROZWIĄZANIE -----------------------------
Zrobilem inaczej.
Emotikony teraz daje w taki [ i ] np. [smile.gif].
Uzylem funkcji preg_replace_callback();
  1. <?
  2. $text = preg_replace_callback(&#092;"#[(.*?)]#si\", \"EmoticonsNoCode\", $text); 
  3. ?>

i stworzylem funkcje EmoticonsNoCode.
W funkcji mam normalne zamienianie Emotikon np.
  1. <?
  2. $text = str_replace (&#092;":)\", \" <img src=\"img/emotikony/icon_smile.gif\" border=\"0\" alt=\":)\">\", $text); 
  3. ?>


Rozwiązanie podaje, jakby czasem ktoś potrzebował.
plewa
A ja zrobiłem tak:

  1. <?php
  2.  
  3. $text = 'biggrin.gif kurde ++ nic';
  4. $t = 'kurde';
  5. $tab = split(' ', $text);
  6.  
  7. while($ele = each($tab))
  8. {
  9. echo $ele['1']; 
  10. echo '<br>';
  11. }
  12.  
  13. ?>


sktrypt podzieli łańcuch ma wyrazy i jeśli wyraz będzie równał się :smile.gif można go wtedy podmienić na smile.gif
SHiP
Najlepiej to zrobić tak...

masz kody zawarte pomiędzy [code] [php] itp. Aby uniknąć ich wielokrotnego przetwarzania(co jest bardzo czasochłonne) stworz prosta klase/funckje cachująca te bloki to jakiego katalogu np BBcode/php BBcode/code

Teraz robisz tak zamieniasz kod na np.. pomiedzy [code ] [ /code ] na np [code=BBcode/php/mojtajnyplikzwygenerowanymkodem.php]

Nastepnie przerzucasz przez parser pozostaly text zamieniajac emotki a na koncu podmieniasz juz wygenerowany kod z pliku
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.