Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Czemu nie działa str_replace ?
Forum PHP.pl > Forum > Przedszkole
esesjot
Hej! mam taki skrypcik php, który pokazuje to co jest pliku txt, ale nie wiem czemu nie zamienia buziek na emotikony. Pomożecie?
  1. Oto skrypt php:
  2. <?php
  3.     
  4.  
  5. $plik = &#092;"text.txt\";
  6.  
  7. if (filesize($plik) == 0) {
  8.     echo &#092;"<table cellspacing=0 cellpadding=0 border=0 align=center><tr>\"
  9.     .&#092;"<td class=ramka><font color=#FF0000> Katalog jest pusty!</font>\"
  10.     .&#092;"</td></tr></table>\";
  11. }
  12. $file = file($plik);
  13. $count = 0;
  14. for ($i=0;$i<count($file);$i++) {
  15.     $grupa = split(&#092;"|\", chop($file[$i]));
  16.     $split = explode(&#092;"||\", $file[$i]);
  17.     $info = strip_tags($info,&#092;"\");
  18.     $info = str_replace(&#092;":)\",\"<img src='smilies/smile.gif'>\",$split[2]);
  19.     $info = str_replace(&#092;":(\",\"<img src='smilies/sad.gif'>\",$split[2]);
  20.     $info = str_replace(&#092;":P\",\"<img src='smilies/bigrazz.gif'>\",$split[2]);
  21.     $info = str_replace(&#092;":D\",\"<img src='smilies/biggrin.gif'>\",$split[2]);
  22.     $info = str_replace(&#092;"8)\",\"<img src='smilies/cool.gif'>\",$split[2]);
  23.     $info = str_replace(&#092;":@\",\"<img src='smilies/mad.gif'>\",$split[2]);
  24.     $info = str_replace(&#092;";)\",\"<img src='smilies/wink.gif'>\",$split[2]);
  25.     $info = str_replace(&#092;"?questionmark.gif\",\"<img src='smilies/confused.gif'>\",$split[2]);
  26.     $count++;
  27.     clearstatcache();
  28.     if (filesize($plik) != 0) {
  29.         echo &#092;"<table cellspacing=0 cellpadding=0 boreder=0 width=100%>
  30.         <tr><td class=ramka> Nick: <b style=&#092;"color: #3399CC\">$split[0]</b>\"
  31.         .str_replace(&#092;"\",\"\",$split[3]).\"<br>E-mail: <a href='mailto:$split[1]'>$split[1]</a>\".\"<br>Tre¶ć: $info\",\"<hr>\";
  32.  
  33.         }
  34. }
  35.  
  36. ?>


a to kawałek pliku txt:
Kod
gsr||sgd||Ń||
gsr||sgd||gsd||
gdsfd||gds||sgfd||
fsf||sfds||_:)_:(||
fsf||sfds||||
TooOld||wiesz||:)||
vsfd||vscv||:)||
vsfd||vscv||:)||
Turbo||turbo@malpa.pl||:)||||
Turbo||turbo@malpa.pl||:)||:)||


Dzięki!
Wedrowiec
za kazdym razem "nadpisujesz" zamianę.

Po pierwszym wywołaniu powiniene¶ zamieniać nie $split[2] a $info
esesjot
Nadal nie bardzo rozumiem (pocz±tkuj±cy).
Wedrowiec
ok:
Kod
$info = str_replace(":)","<img src='smilies/smile.gif'>",$split[2]);
   $info = str_replace(":(","<img src='smilies/sad.gif'>",$split[2]);
   $info = str_replace(":P","<img src='smilies/bigrazz.gif'>",$split[2]);

1 linijka : pod $info przypisujesz zmieniony $split2, tak?
2 linijka : pod $info przypisujesz zmieniony ... $split2 - czyli tracisz zmiane z linijki 1

Kod
$info = str_replace(":)","<img src='smilies/smile.gif'>",$split[2]);
   $info = str_replace(":(","<img src='smilies/sad.gif'>",$info);
   $info = str_replace(":P","<img src='smilies/bigrazz.gif'>",$info);


czyli dokonujesz 1 zmiany, drug± zmianę wykonujesz na ZMIENIONYM stringu czyli $info

//update
na końcu wy¶wietlasz oczywi¶cie info a nie $split2

str_replace zwraca Ci wynik który przypisujesz pod zmienn± $info, nie modyfikuje samego $split[2]
esesjot
Już wszystko działa exclamation.gif! Dzięki ! guitar.gif

Jeszcze mam pytanko

Co zrobić by w txt spacja nie zapisywała się jako "_" , je¶li kod skryptu zapisuj±cego jest taki:
  1. <?
  2. $nick = $_POST[&#092;"nick\"];
  3. $e_mail = $_POST[&#092;"e_mail\"];
  4. $tresc = $_POST[&#092;"tresc\"];
  5. if (($nick == &#092;"\")||($e_mail == \"\")||($tresc == \"\")) {
  6. echo &#092;"<table cellspacing=0 cellpadding=0 boreder=0 align=center><tr><td class=ramka align=center><font color=#FF0000>Wypełnij wszystkie pola formularza!</font><br><br><a href=\"javascript:history.back()\\">Popraw !</a></td></tr></table>\";
  7.  
  8. } 
  9. if (($nick != &#092;"\")&&($e_mail != \"\")&&($tresc != \"\")) {
  10. //wpis w kategorii
  11. $info = strip_tags($info,&#092;"\");
  12. $info = str_replace(&#092;":)\",\"<img src='smilies/smile.gif'>\",$info);
  13. $info = str_replace(&#092;":(\",\"<img src='smilies/sad.gif'>\",$info);
  14. $info = str_replace(&#092;":P\",\"<img src='smilies/bigrazz.gif'>\",$info);
  15. $info = str_replace(&#092;":D\",\"<img src='smilies/biggrin.gif'>\",$info);
  16. $info = str_replace(&#092;"8)\",\"<img src='smilies/cool.gif'>\",$info);
  17. $info = str_replace(&#092;":@\",\"<img src='smilies/mad.gif'>\",$info);
  18. $info = str_replace(&#092;";)\",\"<img src='smilies/wink.gif'>\",$info);
  19. $info = str_replace(&#092;"?questionmark.gif\",\"<img src='smilies/confused.gif'>\",$info);
  20. $nick = htmlspecialchars($nick);
  21. $e_mail = htmlspecialchars($e_mail);
  22. $tresc = htmlspecialchars($tresc);
  23. $dane = &#092;"$nick||$e_mail||$tresc||n\";
  24. $dane = str_replace(&#092;" \",\"_\",$dane);
  25. $dane = strtr(StripSlashes($dane), &#092;"±¶Ľˇ¦¬\", \"±¶Ľˇ¦¬\");
  26. $file = &#092;"text.txt\";
  27. $fp = fopen(&#092;"$file\", \"r+\");
  28. $dane=$dane.fread($fp, filesize($file));
  29. rewind($fp);
  30. flock($fp, 2);
  31. fputs($fp, &#092;"$dane\");
  32. flock($fp, 3);
  33. fclose($fp);
  34.  
  35. header(&#092;"Location: pokaz.php\");
  36. }
  37.  
  38.  
  39. ?>


Dzięki
Wedrowiec
oj kolego by¶ choć na chwilę się przyjrzał:

Kod
$dane = str_replace(" ","_",$dane);


wywal t± linijkę
esesjot
Dzięki - moje gapiostwo (bo sam sobie wcze¶niej wpisałem to _ i zapomniałem o tym) smile.gif Już nie męcze Cię smile.gif guitar.gif
rzseattle
php -> php Poczatkujacy
kszychu
Z powodu powstaj±cego wycieku ¶mietanki zamykam.
Aha, autorzy pewnie się nie obraż±, że usunę te ostatnie OTy. Sami na pewno by o to poprosili w dobrej wierze; nie chcieli przecież nabijać sobie postów. aaevil.gif
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.