Search code examples
phparraysemoticons

emoticons replace array with "<3"


I wanted to put some nice looking smileys in my chat on my site, but unfortunately the "<3" array to put a heart smiley in my chat doesn't work for some reason, all the other ones work fine, I think the "<" is causing this problem. But I don't know how to fix this, take a look in the code below:

$patterns = array(':)', ':D', ':p', ':P', ':(', '(aapje)', '8)', '<3');
$replacements = array('<img src="smiles/smile.gif"/>', '<img src="smiles/bigsmile.png"/>', '<img src="smiles/tongue.png"/>', '<img src="smiles/tongue.png"/>', '<img src="smiles/sad.png"/>', '<img src="smiles/aapje.png"/>', '<img src="smiles/nerd.png"/>', '<img src="smiles/love.png"/>');

$message = str_replace($patterns, $replacements, $message);

code update

$patterns = array(':)', ':D', ':p', ':P', ':(', '(aapje)', '8)', '/</3', '(l)');
         $replacements = array('<img src="smiles/smile.gif"/>', '<img src="smiles/bigsmile.png"/>', '<img src="smiles/tongue.png"/>', '<img src="smiles/tongue.png"/>', '<img src="smiles/sad.png"/>', '<img src="smiles/aapje.png"/>', '<img src="smiles/nerd.png"/>', '<img src="smiles/love.png"/>', '<img src="smiles/love.png"/>');
         $reg_exUrl = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/";
         $blankexp = "/^\n/";
         $message = htmlentities(strip_tags($_POST['message']), ENT_QUOTES);

         if (!preg_match($blankexp, $message)) {

             if (preg_match($reg_exUrl, $message, $url)) {
                $message = preg_replace($reg_exUrl, '<a href="'.$url[0].'" target="_blank">'.$url[0].'</a>', $message);
             } 
             $message = str_replace($patterns, $replacements, $message);

Thx and Grts.


Solution

  • It may be due to < sign. Try html entity for <- use &lt;

    Following code should work:

    $message = htmlspecialchars("Love Smiley <3");
    $patterns = array(':)', ':D', ':p', ':P', ':(', '(aapje)', '8)', '&lt;3');
    $replacements = array('<img src="smiles/smile.gif"/>', '<img src="smiles/bigsmile.png"/>', '<img src="smiles/tongue.png"/>', '<img src="smiles/tongue.png"/>', '<img src="smiles/sad.png"/>', '<img src="smiles/aapje.png"/>', '<img src="smiles/nerd.png"/>', '<img src="smiles/love.png"/>');
    
    $message = str_replace($patterns, $replacements, $message);
    
    echo $message;