我正在网站上制作这样的过程中会有微笑,而写一些可以定义页面上的字符。这就是我试图这样做的方式:
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;
这样就不会在页面上显示任何内容。
问题在于它不会显示笑脸中的图像。
答案 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