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

PHP将游戏内嵌{rrggbb}颜色标记转换为<span>彩色文本的实现问询

嘿,这个需求我之前做游戏社区工具的时候刚好碰到过,给你分享一套实用的PHP实现方案,完美解决你的转换需求:

核心思路回顾

你说的逻辑完全正确:

  • 第一个颜色标记 → 替换为<span style="color:#RRGGBB">
  • 后续每个颜色标记 → 先闭合上一个span,再开新的:</span><span style="color:#RRGGBB">
  • 最后必须补一个</span>来闭合最后一个颜色块

实现代码(两种方案可选)

方案1:分阶段替换(直观易读)

function convertGameColoredText($gameText) {
    // 匹配游戏颜色标记的正则:{6位十六进制颜色码}
    $colorPattern = '/{([0-9a-fA-F]{6})}/';
    
    // 先检查有没有颜色标记,没有直接返回原文本
    $colorCount = preg_match_all($colorPattern, $gameText, $_);
    if ($colorCount === 0) {
        return $gameText;
    }

    // 第一步:替换第一个颜色标记为span开启标签
    $convertedText = preg_replace($colorPattern, '<span style="color:#$1">', $gameText, 1);
    
    // 第二步:替换剩余所有颜色标记为「闭合+开启」的组合
    $convertedText = preg_replace($colorPattern, '</span><span style="color:#$1">', $convertedText);
    
    // 第三步:给最后一个颜色块补闭合标签
    $convertedText .= '</span>';

    return $convertedText;
}

// 测试用例
$testInput = "{ff0000}红色文本 {00ff00}绿色文本 {ffff00}黄色文本";
echo convertGameColoredText($testInput);

方案2:回调函数替换(更简洁)

用preg_replace_callback可以一次性处理所有替换逻辑,代码更紧凑:

function convertGameColoredText($gameText) {
    $isFirstColor = true;
    
    $convertedText = preg_replace_callback(
        '/{([0-9a-fA-F]{6})}/i', // 加i修饰符忽略大小写,兼容FF0000和ff0000
        function($matches) use (&$isFirstColor) {
            $colorCode = $matches[1];
            if ($isFirstColor) {
                $isFirstColor = false;
                return "<span style='color:#{$colorCode}'>";
            }
            return "</span><span style='color:#{$colorCode}'>";
        },
        $gameText
    );

    // 如果有过颜色替换,补闭合标签
    if (!$isFirstColor) {
        $convertedText .= '</span>';
    }

    return $convertedText;
}

注意事项

  1. 正则里的[0-9a-fA-F]{6}确保只匹配合法的6位十六进制颜色码,避免误替换普通文本里的{xxxxxx}格式内容
  2. 方案2里的i修饰符可以兼容游戏里大小写混合的颜色码(比如{FF0000}和{ff0000}都能识别)
  3. 如果游戏里有{fff}这种3位简写颜色码,只需把正则改成{([0-9a-fA-F]{3,6})},然后在回调里处理3位转6位的逻辑(比如把fff转成ffffff)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:49:23