Problema Emoticon

  • Creatore Discussione Creatore Discussione matador
  • Data di inizio Data di inizio

matador

Utente Attivo
26 Nov 2011
68
0
0
Seguendo la guida sul vostro Sito per inserire Emoticon in una TextArea, ho un problema a visualizzare tutte le emoticon...
Se per esempio in un messaggio inserisco 2 Emoticon :haha: & :ciao:, mi fa' visualizzare solo l'ultima della lista.

Codice:
function faccine($msg){
  $msg_ok = str_replace(":ciao:", "<img src="smile_1.gif">", $msg);
  $msg_ok = str_replace(":haha:", "<img src="smile_2.gif">", $msg);
  return $msg_ok;
}

mentre l'altra me la stampa come normale scritta...
L'ho capito perche' ho invertito la posizione, e sono riuscito anche a visualizzare :ciao: mettendolo come ultimo...
Come posso risolvere? Grazie :fonzie:
 
ciao
se guardi il tuo scrip e, inparticolare, lo segui
PHP:
function faccine($msg){
  $msg_ok = str_replace(":ciao:", "<img src="smile_1.gif">", $msg);
  $msg_ok = str_replace(":haha:", "<img src="smile_2.gif">", $msg);
  return $msg_ok;
}
ti accorgi quello che succede
nella function entra $msg
esegue la prima istruzione e valorizzi $msg_ok
esegui la seconda istruzione e (sovrascivendo) valorizzi coll'ultimo valore $msg_ok
es. tu fai così
PHP:
$a=5;
$a=7;
echo $a;
l'eco stamperà sempre 7
potresti fare
PHP:
$msg_ok = str_replace(":ciao:", "<img src="smile_1.gif">", $msg).str_replace(":haha:", "<img src="smile_2.gif">", $msg);
cioè concatenare le stringhe
oppure usare un array

PHP:
 $msg_ok[] = str_replace(":ciao:", "<img src="smile_1.gif">", $msg);//se valorizzata diventa $msg_ok[0] 
  $msg_ok[] = str_replace(":haha:", "<img src="smile_2.gif">", $msg);//se valorizzata  diventa $msg_ok[1]
  return $msg_ok;
 
ciao
se fai es.
PHP:
$emiticon=faccine(":haha: :ciao:");
echo $emiticon;//uotput array
devi stampare i due contenuti
PHP:
$emiticon=faccine(":haha: pinco pallo :ciao:");
echo $emiticon[0] . $emoticon[1];
se invece usi la concatenazione
basta
PHP:
echo $emoticon;

dimenticavo: posta il link della guida
 
Ultima modifica:
ciao
non avevo pensato che gli emoticon si trovassero all'interno di un testo
cioè $msg deve essere modificato in cascata
prova così, inoltre metti \ ai nomi dei gif

PHP:
<?php
$messaggio="pinco :-) pallo :-D sempronio :-( asdrubale";//ipotesi
function faccine($msg){
  $msg_ok = str_replace(":-)", "<img src=\"smile_1.gif\">", $msg);//diventa pinco <img src=\"smile_1.gif\"> pallo :-D sempronio :-( asdrubale"
  $msg_ok = str_replace(":-D", "<img src=\"smile_2.gif\">", $msg_ok);//diventa pinco <img src=\"smile_1.gif\"> pallo <img src=\"smile_2.gif\"> sempronio :-( asdrubale"
  $msg_ok = str_replace(":-(", "<img src=\"smile_3.gif\">", $msg_ok);//diventa pinco <img src=\"smile_1.gif\"> pallo <img src=\"smile_2.gif\"> sempronio <img src=\"smile_3.gif\"> asdrubale"
  //se uno o più emoticon non ci sono il relpace non modifica nulla
  return $msg_ok;
}
echo faccine($messaggio);
?>
sappimi dire, poi eventualmente avverto l'autore
 
Sisi il tuo funziona benissimo! L'altro dal Sito invece funzionava solo l'ultimo replace come ho gia' detto :)
 

Discussioni simili