2013-07-22 110 views
4

我想在我的网站上聊天时放一些漂亮的笑脸,但不幸的是,“< 3”阵列在我的聊天中放置心脏表情不起作用,所有其他的工作正常,我认为“<”是造成这个问题。但我不知道如何解决这个问题,看看下面的代码:表情符号替换为“<3”

$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); 

代码更新

$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和GRTS。

+0

你用用strip_tags或类似这样的东西吗? – bwoebi

+0

是的,我确实看过更新:P –

回答

4

这可能是由于<的标志。尝试HTML实体< - 使用&lt;

下面的代码应该工作:

$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; 
+3

[必填W3Fools链接](http://www.w3fools.com/) –

+0

@ Shumail92我认为该功能已经htmlspecialchars安全 –

+0

是的,但这是为了安全起见。 –

1

尝试更改<&lt; - 我想象你的代码试图解析任何东西后作为标签。

+0

对不起,这也不起作用。 Thx无论如何 –

0

使用&lt;,而不是<

$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;