开发者社区 问答 正文

使用str_replace替换字符,然后替换1个字符

我查询了一个Minecraft服务器,它看起来像“§f§6§lMINE§b§lHEROES§7[1.7-1.14 +]§b20%优惠§e§lPRISONSERVER RESET§f-§9§lVIP现在出来!”

所以我尝试使用str_replace摆脱这些§。

str_replace('§', '', $server->name)

现在看起来像这样:“ f6lMINEblHEROES 7 [1.7-1.14 +] b20%折扣,已将Elprison服务器重置f-9lVIP售罄!”

它确实消除了很多麻烦,但是现在有随机字母。这些随机字母在§符号后。因此,我需要str_replace该符号,以及之后的1个字符。

展开
收起
社区秘书 2019-12-09 16:46:16 464 分享 版权
阿里云 AI 助理回答

看起来你想要从字符串中移除 Minecraft 服务器名称中的格式控制字符(以 '§' 开始,后面跟着表示颜色或样式的字符)以及这些控制字符之后紧跟着的一个字符。要实现这个需求,你可以使用 PHP 的 preg_replace 函数来执行正则表达式替换,而不是 str_replace。这样可以更灵活地匹配并移除包括 '§' 符号及其后紧跟的一个字符的模式。

下面是一个示例代码片段,展示了如何使用 preg_replace 来完成这个任务:

$serverName = "§f§6§lMINE§b§lHEROES§7[1.7-1.14  ]§b20%优惠§e§lPRISONSERVER RESET§f-§9§lVIP现在出来!";
$cleanedName = preg_replace('/§.?/u', '', $serverName);
echo $cleanedName;

这里的正则表达式 '/§.?/u' 的含义是: - §:直接匹配字符 '§' - .?:匹配任意一个字符(. 表示任意字符,? 表示前面的项可出现 0 次或 1 次,在这里确保至少匹配一个字符) - /u:Unicode 模式,确保正则表达式能正确处理 Unicode 字符串

这段代码会移除所有形如 '§x'(其中 x 是任意字符)的序列,从而帮助你清理掉那些不需要的格式控制字符及其后的单个字符,得到干净的服务器名称。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答地址: