我很难被一个非常简单的str_replace函数所困扰。 在我的数据库中,我有一个用于Minecraft服务器motd的字段(当天的消息)。当我从服务器收集数据时,我将数据存储在我的数据库中。
服务器可以通过添加颜色代码来对颜色进行着色,我已将其存储在数据库中作为& sect,然后是指定颜色的数字。我正在尝试使用str_replace将& sectnumber转换为具有实际颜色的html元素。我想出了以下代码:
if ($server_data['show_motd'] == 1) {
$motd = $server_data['motd'];
$motd = str_replace("§0","</span><span style=\"color:#000\">", $motd);
$motd = str_replace("§1","</span><span style=\"color:#00A\">", $motd);
$motd = str_replace("§2","</span><span style=\"color:#0A0\">", $motd);
$motd = str_replace("§3","</span><span style=\"color:#0AA\">", $motd);
$motd = str_replace("§4","</span><span style=\"color:#A00\">", $motd);
$motd = str_replace("§5","</span><span style=\"color:#A0A\">", $motd);
$motd = str_replace("§6","</span><span style=\"color:#FA0\">", $motd);
$motd = str_replace("§7","</span><span style=\"color:#AAA\">", $motd);
$motd = str_replace("§8","</span><span style=\"color:#555\">", $motd);
$motd = str_replace("§9","</span><span style=\"color:#55F\">", $motd);
$motd = str_replace("§a","</span><span style=\"color:#5F5\">", $motd);
$motd = str_replace("§b","</span><span style=\"color:#5FF\">", $motd);
$motd = str_replace("§c","</span><span style=\"color:#F55\">", $motd);
$motd = str_replace("§d","</span><span style=\"color:#F5F\">", $motd);
$motd = str_replace("§e","</span><span style=\"color:#FF5\">", $motd);
$motd = str_replace("§f","</span><span style=\"color:#FFF\">", $motd);
echo "
<tr>
<td class=\"serverdisplayspan\">MOTD:</td>
<td class=\"serverdisplaylidet\"><span>$motd</span</td>
</tr>
";
}
但是,str_replace函数都没有做任何事情。奇怪的是,当我替换
$motd = $server_data['motd'];
带
$motd = "§cWelcome to §bSkyBlock§c!"
这是存储在数据库中的,它完美地运行。没有str_replaces,这两个变量看起来完全一样。我甚至使用gettype()检查了每个变量的类型 它们都是字符串。我也在数据库结果上尝试了utf_decode(),但似乎没有任何效果。
数据库结果与我刚输入的字符串有什么区别吗?我不知道它是什么,但显然必须有一个。
感谢。
答案 0 :(得分:1)
这样的事情怎么样(换掉CSS类的内联样式)
$motd = preg_replace('/&(amp;)?(sect[0-9a-f])/',
'</span><span class="$2">', $motd);
此处使用混合&
和&
- http://codepad.viper-7.com/12phow
有了这个,你还需要在样式表中添加这样的东西
.sect0 { color: #000; }
.sect1 { color: #00A; }
.sect2 { color: #0A0; }
/* etc */
答案 1 :(得分:0)
我有一个类似的问题,并使用
修复它mysqli_set_charset($con,'utf8');
之后
mysqli_connect