login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Array replace voor Smiley invoegen

Offline Dark_Paul - 12/06/2006 19:40
Avatar van Dark_PaulPHP ver gevorderde Ik heb 't script van Tuinstoel gebruikt om smiley-codes te vervangen door de <IMG>-tags en om dan de string weer te return'en. Ik heb 't zo(zie hieronder). (dit lijkt veel op 't origineel van Tuinstoel, ik heb 't iets aangepast)
Toch werkt 't niet, het lijkt wel alsof de gehele functie ReplaceSmilies wordt overgeslagen. in de uiteindelijke $Message staat namelijk nog steeds de code bijvoorbeeld, ipv het plaatje met locatie <IMG SRC="images/smile/smile.gif">
Ik heb Tuinstoel al gepm'd, aangezien hij de auteur is, maar hij zie tde fout ook niet.
  1. // starten v/d fucntie ReplaceSmilies, het vervangen van text door smilies.
  2. function ReplaceSmilies($Message)
  3. {
  4. // map waarin de smilies staan...
  5. $cDir = 'images/smile';
  6. // array met de smilie codes.
  7. $cCodes = array('>:O','(h)',';(','>|',':S','>:|',';d',':)',':d',':@',':x',':(',':o',':p',';)');
  8. // wat het moet worden
  9. $cSmiles = array('angry.gif','cool.gif','cry.gif','devious.gif','erm.gif','evil.gif','grin.gif','happy.gif','laugh.gif','mad.gif','quiet.gif','sad.gif','shocked.gif','tongue.gif','wink.gif');
  10.  
  11. $cAantal = count($cCodes);
  12.  
  13. for($i=0;$i<$cAantal;$i++)
  14. {
  15. // vervangen van de smilies uit de 1e array.
  16. $Message = str_replace($cCodes[$i],'<IMG SRC="'.$cDir.'/'.$cSmiles[$i].'" WIDTH="16px" BORDER="0px">',$Message);
  17. }
  18. return $Message;
  19. }
  20.  
  21. $Message= ReplaceSmilies($Message);

Voor 't script van Tuinstoel, kijk hier http://www.site...amp;id=410

12 antwoorden

Gesponsorde links
Offline BigBug - 12/06/2006 19:50 (laatste wijziging 12/06/2006 19:51)
Avatar van BigBug PHP expert Hoe echo je het bericht?

Toch wel:
  1. <?php
  2. echo ReplaceSmilies($vBericht); // :)
  3. ?>
Edit: Hmm, aan je script te zien wel geloof ik, maar echt de echo zie ik niet staan... Je moet de functie echoen met daarin de var met textwaarden.
Offline Gerard - 12/06/2006 19:51
Avatar van Gerard Ouwe rakker
Citaat:
$Message= ReplaceSmilies($Message);


Hij vangt de return-value op, dus maakt het niet uit of hij het nu echoëd of dat hij het later doet.
Offline Dark_Paul - 12/06/2006 20:47
Avatar van Dark_Paul PHP ver gevorderde De $Message wordt daarna in een textbestand geschreven (ben bezig om er een MySQL DB voor te maken, ben ik een aantal uren geleden aan begonnen).
Offline Simon - 12/06/2006 21:08
Avatar van Simon PHP expert ik weet niet of het er iets mee te maken heeft, maar mag dit:

in je functie ($Message) {
//tekst
$Message = ...

en hem ook aanroepen met $Message = $ReplaceSmilies($Message)

weet het niet hoor
Offline timmie_loots - 12/06/2006 22:13
Avatar van timmie_loots PHP gevorderde Ja, dat mag.

De code werkt hier trouwens gewoon, ik denk dat er iets in het gehele script zit waardoor het niet werkt.
Offline Ultimatum - 12/06/2006 22:23
Avatar van Ultimatum PHP expert deze heb ik aan de hand van Tuinstoels script gemaakt (gekopieërd dus )

en dit werkt naar behoren

  1. <?php
  2. function smilies($txt)
  3. {
  4. $codes = array(':d', ':)', ':@', ';-)', ':s', ':/', ':|', '*-)');
  5. $smilies = array("biggrin.gif", "smile.gif", "angry.gif", "wink.gif", "confused.gif", "cry.gif", "eek.gif", "woot.gif");
  6.  
  7. for($i = 0; $i < count($codes); $i++)
  8. {
  9. $txt = str_replace($codes[$i],'<img src="images/smilies/'.$smilies[$i].'">',$txt);
  10. }
  11. return $txt;
  12. }
  13. ?>


kijk een het verschil (zie het zo snel niet )

roep het zo aan 

  1. <div class="r"><?= nl2br(stripslashes(smilies($robj->message))) ?></div>
Offline Dark_Paul - 13/06/2006 08:45
Avatar van Dark_Paul PHP ver gevorderde @Ultimatum: Hoe bedoel je, roep het zo aan? De smileys worden eerst vervangen, vervolgens weer opgeslagen in $Message en $Message wordt dan weggeschreven naar een textfile, zoals dit:(ik ben bezig met MySQL om een DB te maken, zal een stuk makkelijker zijn)
  1. $Message= htmlspecialchars($Message);
  2. $Message= stripslashes(nl2br($Message));
  3.  
  4. // Smiley replace-functie
  5.  
  6. $Message= ReplaceSmilies($Message);
  7. $textfile= "comment.txt";
  8.  
  9. $pointer= fopen($textfile,"r+");
  10. $oudcommentaar= fread($pointer,filesize($textfile));
  11.  
  12. $Written="$Message"
  13. //wordt weggeschreven naar textfile
  14.  
  15. rewind($pointer);
  16. fputs($pointer,"$Written\n$oudcommentaar\n");
Offline Ultimatum - 13/06/2006 08:49
Avatar van Ultimatum PHP expert ik weet niet hoe je het met een textfile wil doen maar het is hetzelfde principe
Offline b4nkr0bz0r - 13/06/2006 10:29
Avatar van b4nkr0bz0r PHP gevorderde Even een kleine toevoeging, die for-lus is niet nodig. Aangezien replace(); ook array's accepteerd als ik me niet vergis.
Offline Ibrahim - 13/06/2006 12:58
Avatar van Ibrahim PHP expert volgens mij is dat preg_replace en niet str_replace 
Offline Dark_Paul - 13/06/2006 14:29
Avatar van Dark_Paul PHP ver gevorderde het werkt. Ik maakte van de For loop dit:
  1. for($i=0;$i<=$cAantal;$i++)
We waren namelijk tot de conclusie gekomen, dat $i kleiner blijft dan $cAantal, dus dat misschien niet alle smiley's werden meegenomen. 't script werkte. Toen ik 't zonder de = deed, dus alleen $i<$cAantal werkte 't ook. De fout heeft waarschijnlijk in de computer gezeten.
Offline b4nkr0bz0r - 13/06/2006 17:43
Avatar van b4nkr0bz0r PHP gevorderde Maar alsnog is die for-lus niet nodig en silicom; vanaf PHP 4.0.5 kan elke parameter een array zijn bij deze functie.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.25s