我对应该是一个非常简单的 str_replace 函数感到困惑。在我的数据库中,我有一个我的世界服务器 motd(当天的消息)的字段。当我从服务器收集数据时,我将包括 motd 在内的数据存储在我的数据库中。
服务器可以通过添加颜色代码来为 motds 着色,我将其作为 § 存储在数据库中,然后是指定颜色的数字。我正在尝试使用 str_replace 将 §number 转换为具有实际颜色的 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() ,但似乎没有任何效果。
数据库结果和我刚刚输入的字符串有区别吗?我不知道它是什么,但显然必须有一个。
谢谢。