4

我想在我的网站上的聊天中放一些好看的笑脸,但不幸的是,在我的聊天中放置心形笑脸的“<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);

谢谢和Grts。

4

3 回答 3

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;
于 2013-07-22T12:37:45.323 回答
1

尝试更改<&lt;- 我想您的代码正在尝试将其后的任何内容解析为标签。

于 2013-07-22T12:36:21.240 回答
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;
于 2013-07-22T12:40:59.863 回答