Emoticons replace the array "<3"

I wanted to add emoticons to my chat on my site, but, unfortunately, the array "<3" to put a hearty emoticon in my chat doesn’t work for some reason, everyone else works fine, I think that "<" causes this problem. But I do not know how to fix this, look at 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); 

thanks and grts.

+4
source share
3 answers

This may be due to the < sign. Try the html object for < - use &lt;

The 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; 
+4
source

Try changing < to &lt; - I would suggest that your code is trying to parse anything after it as a tag.

+1
source

Use &lt; instead of < :

 $message = htmlspecialchars("I love you!!! <3 <3 <3"); // defining message $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; 
0
source

Source: https://habr.com/ru/post/1492700/


All Articles