[RESOLU] Problème insertion smiley

Eléphant du PHP | 283 Messages

31 mai 2015, 20:06

Bonjour,

Je suis en train de mettre en place des smileys sur mon chat mais je rencontre un problème pour le remplacement.
Le smiley ne s'affiche pas mais il y a le code qui se met à la place : <img src='heureux.png'>

Je ne vois pas pourquoi la transformation ne se fait pas, voici mes codes :
Le fichier fonction.inc.php
<?php
function load_emoticons($content) {
	
	//Sourire
	$content = str_replace(":)"," <img src='heureux.png'>",$content);
	
	//Décu
	$content = str_replace(":("," <img src='/fichier/emoticons/sad.png'>",$content);
	
	//Happy
	$content = str_replace(":D"," <img src='/fichier/emoticons/biggrin.png'>",$content);
	
	//Tire la langue
	$content = str_replace(":P"," <img src='/fichier/emoticons/tongue.png'>",$content);
	
	//Sourire
	$content = str_replace(":)"," <img src='/fichier/emoticons/smile.png'>",$content);
	
	//Méfiant
	$content = str_replace("--'"," <img src='/fichier/emoticons/dry.png'>",$content);
	
	//Ninja
	$content = str_replace(":ninja:"," <img src='/fichier/emoticons/ph34r.png'>",$content);
	
	//Like a boss
	$content = str_replace(":cool:"," <img src='/fichier/emoticons/cool.png'>",$content);
	
	//Clin d'oeil
	$content = str_replace(array(";-)", ";)")," <img src='/fichier/emoticons/wink.png'>",$content);
	
	//Souril
	$content = str_replace("^^"," <img src='/fichier/emoticons/happy.png'>",$content);
	
	return $content;
}
?>
Le fichier minichat.php
<?php
session_start();
include('module/minichat/fonctions.inc.php');
if (isset($_POST['message'])) 
{
    if (!empty($_POST['message'])) 
    {
	$message = mysql_real_escape_string(utf8_decode($_POST['message']));
        $pseudo = $_SESSION['pseudo'];
		$rang = $_SESSION['rang'];
        mysql_query("INSERT INTO minichat(pseudo,message,timestamp) VALUES('$pseudo', '$message', '".time()."')");
    }
}
$reponse = mysql_query("SELECT M.id, M.pseudo, M.message, M.timestamp, A.id, A.pseudo, A.rang FROM minichat M, admin_membre A WHERE M.pseudo=A.pseudo ORDER BY M.id DESC LIMIT 0,10");
while($val = mysql_fetch_array($reponse))
{
?>
<?php if ($val['rang'] == '1')
{
    echo '<p><font color="#FF0000"><strong">'.htmlentities(stripslashes($val['pseudo'])).'</strong></font> à '.date('H\:i\:s',$val['timestamp']).' : '. htmlentities(stripslashes(load_emoticons($val['message']))) .'</p>';
}
 }
mysql_close();
?>
Merci d'avance à ceux qui pourront m'aider à repérer l'erreur. ;)

Mammouth du PHP | 688 Messages

31 mai 2015, 20:20

htmlentities
si tu passes du texte avec des < et >, alors ces caractères sont transformés.
une solution, utiliser load_emoticons après htmlentities et non l'inverse.

Eléphant du PHP | 283 Messages

31 mai 2015, 20:22

Tu veux dire avant htmlentities, car actuellement il se situe après ?

Mammouth du PHP | 688 Messages

31 mai 2015, 20:23

après dans l'ordre d'exécution du code.

Eléphant du PHP | 283 Messages

31 mai 2015, 20:28

D'accord merci.
Donc ça donnerait ça :
<?php if ($val['rang'] == '1')
{
    echo '<p><font color="#FF0000"><strong">'.htmlentities(stripslashes($val['pseudo'])).'</strong></font> à '.date('H\:i\:s',$val['timestamp']).' : '. load_emoticons(htmlentities(stripslashes($val['message']))) .'</p>';
}