You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除字符串中§字符及其后续的单个字符?

用正则表达式轻松处理带颜色变量的字符串

嘿,我来帮你搞定这个问题!你需要处理的是那种带§开头颜色标记的字符串,核心就是把所有§加上后续单个字符的标记去掉,保留实际的文本内容对吧?preg_replace正好是干这个的最佳工具,比你看的str_replace这类更灵活,因为它能匹配模式化的内容。

直接移除颜色标记的代码

// 你的原始字符串
$input = '§fc§9o§7l§1o§fr';
// 用preg_replace移除所有§开头加单个字符的标记
$output = preg_replace('/§./', '', $input);
echo $output; // 输出: coolr

为啥这么写?

  • 正则表达式/§./专门匹配你说的颜色变量:
    • §就是你说的颜色变量起始字符,直接匹配它就行
    • .代表任意单个字符,刚好对应每个§后面跟着的那个颜色定义字符
  • preg_replace会把所有符合这个模式的内容替换成空字符串,自然就剩下纯文本了。

如果你是想把这些颜色标记转换成实际的样式(比如HTML颜色),也可以用preg_replace_callback来做,比如先定义一个颜色映射表,再逐个替换:

// 定义§代码对应的HTML颜色(你可以根据自己的需求补充更多)
$colorMap = [
    'f' => '#FFFFFF',
    '9' => '#0000AA',
    '7' => '#808080',
    '1' => '#0000FF'
];

$input = '§fc§9o§7l§1o§fr';
$output = preg_replace_callback('/§(.)/', function($match) use ($colorMap) {
    // 取出§后面的颜色代码,找对应的颜色值
    $colorCode = $match[1];
    return isset($colorMap[$colorCode]) ? "<span style='color: {$colorMap[$colorCode]}'>" : '';
}, $input);
// 最后补上闭合的span标签(如果是多段颜色切换,可能需要更严谨的处理,这里是简单示例)
$output .= '</span>';

echo $output;

这样就能把带颜色标记的字符串转换成带HTML颜色样式的文本了。

内容的提问来源于stack exchange,提问作者LiskoSlayer63

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:13:26