在内容中展示微笑 - 不会出现微笑

时间:2014-01-20 23:22:01

标签: php

我正在网站上制作这样的过程中会有微笑,而写一些可以定义页面上的字符。这就是我试图这样做的方式:

                echo $tekst;

                $smiles = array(
                  ':)'  => 'devil.png',
                  '>:)'  => 'devil.png',
                  'x('  => 'angry.png',
                  ';-)' => 'wink.png'
                );
                foreach($smiles as $key => $img) {
                    $msg = str_replace($key, "<img src=\"emotions/'.$img.'\" height=\"18\" width=\"18\" />", $msg);
                }
                echo $msg;

这样就不会在页面上显示任何内容。

问题在于它不会显示笑脸中的图像。

3 个答案:

答案 0 :(得分:0)

看起来你有一些额外的单引号。正如您的代码当前,输出是:

Input: Hello :) world
Hello <img src="emotions/'.devil.png.'" height="18" width="18" /> world

如果您更改此行:

$msg = str_replace($key, "<img src=\"emotions/$img\" height=\"18\" width=\"18\" />", $msg);

您获得了正确的输出:

Hello <img src="emotions/devil.png" height="18" width="18" /> world

这是有效的,因为PHP在字符串上使用双引号时执行变量插值。有关详细信息,请参阅this page in the PHP documentation

答案 1 :(得分:0)

我想这是正确的代码:

$msg = 'Hello world :)!';

$smiles = array(
  ':)'  => 'devil.png',
  '>:)'  => 'devil.png',
  'x('  => 'angry.png',
  ';-)' => 'wink.png'
);

foreach($smiles as $key => $img) {
  $msg = str_replace($key, '<img src="emotions/'.$img.'" height="18" width="18" />', $msg);
}

echo $msg;

尽量避免在PHP中使用双引号字符串,它们往往更加混乱且无法维护。

事实上,做这部分的更好方法是:

foreach($smiles as $key => $img) {
  $img = sprintf('<img src="emotions/%s" height="18" width="18" />', $img);
  $msg = str_replace($key, $img, $msg);
}

答案 2 :(得分:0)

以下内容需要更改

$msg = str_replace($key, "<img src=\"emotions/'.$img.'\" height=\"18\" width=\"18\" />", $msg);
                                              ^^    ^^

产生<img src="emotions/'.devil.png.'" height="18" width="18" />

要:

$msg = str_replace($key, "<img src=\"emotions/$img\" height=\"18\" width=\"18\" />", $msg);

生成<img src="emotions/devil.png" height="18" width="18" />

您应始终检查view-source以查看正在制作的内容或执行var_dump