我查询了一个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个字符。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
看起来你想要从字符串中移除 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 是任意字符)的序列,从而帮助你清理掉那些不需要的格式控制字符及其后的单个字符,得到干净的服务器名称。