【发布时间】:2014-07-28 13:57:50
【问题描述】:
使命召唤和地震游戏使用 ^0 到 ^1 形式的代码来定义名称(字符串)中的颜色。我正在开发一个自定义 Web RCON 脚本,并且在将 ^0 ~ ^9 替换为 HTML 颜色以进行输出时遇到问题
我正在尝试替换例如 PHP 中的以下内容
字符串已生成,看起来类似于 Lets Say eg。
^3THE^7::^5现代战争^7::^3服务器
我为此使用了 2 个数组
$find = array(
'/\^0(.*?)\^/',
'/\^1(.*?)\^/',
'/\^2(.*?)\^/',
'/\^3(.*?)\^/',
'/\^4(.*?)\^/',
'/\^5(.*?)\^/',
'/\^6(.*?)\^/',
'/\^7(.*?)\^/',
'/\^8(.*?)\^/',
'/\^9(.*?)\^/',
);
$replace = array(
'<font color="#000000">$1</font>^',
'<font color="#F65A5A">$1</font>^',
'<font color="#00F100">$1</font>^',
'<font color="#EFEE04">$1</font>^',
'<font color="#0F04E8">$1</font>^',
'<font color="#04E8E7">$1</font>^',
'<font color="#F75AF6">$1</font>^',
'<font color="#FFFFFF">$1</font>^',
'<font color="#7E7E7E">$1</font>^',
'<font color="#6E3C3C">$1</font>^',
);
// Just a Random Test String
$aDemoString = "^3THE^7::^5MODERNWARFARE^7::^3Server^7";
$namefix = preg_replace($find, $replace, $aDemoString);
echo $namefix;
输出仅部分有效,我得到了
<font color="#00F100">THE</font><font color="#FFFFFF">::<font color="#04E8E7">MODERNWARFARE</font></font>^7::<font color="#00F100">Server</font>^7
它打破了关闭</font>标签
如果我删除一个 ^7 到我得到的字符串的末尾
<font color="#00F100">THE</font><font color="#FFFFFF">::<font color="#04E8E7">MODERNWARFARE</font></font>^7::^2Server
它似乎没有正确替换字符串中的 ^7,并且由于某种原因弄乱了 html </font> 结束标记,如果我删除最后一个 ^7 则它会破坏最后一个“^2”替换
我的问题是如何让 PHP Preg_replace 正确执行此操作,有什么帮助吗?
【问题讨论】:
-
一个奇怪的 - 循环
preg_replace删除第一个“额外”^7
标签: php html regex preg-replace