-2

我有以下字符串: ^1Flo^2wer^3Po^4wer 你可以看到这个例子http://www.holysh1t.net/quake-live-colors-nickname/

我希望能够获取此字符串并使用 PHP 在我的 html 页面中以彩色显示它。

不幸的是,我没有成功,想知道是否有人可以帮助想出一些代码来做到这一点。

谢谢克鲁兹

4

3 回答 3

2

您可以根据自己的喜好替换/\^([1-7])([^\^]+)/<span class="quake_colour_$1">$2</span>然后更改 CSS 中的颜色。

粘贴到您的 CSS 文件中:

.quake-colour-1 {
    color: red;
}
.quake-colour-2 {
    color: lime;
}
.quake-colour-3 {
    color: yellow;
}
.quake-colour-4 {
    color: blue;
}
.quake-colour-5 {
    color: cyan;
}
.quake-colour-6 {
    color: magenta;
}
.quake-colour-7 {
    color: white;
    background-color: silver;
}

和代码:

<?php
    $string = '^1Flo^2wer^3Po^4wer';

    $html = preg_replace('/\^([1-7])([^\^]+)/', '<span class="quake_colour_$1">$2</span>', $string);

    echo $html;
?>

演示

哪个输出:

<span class="quake_colour_1">Flo</span><span class="quake_colour_2">wer</span><span class="quake_colour_3">Po</span><span class="quake_colour_4">wer</span>

或者,您可以使用 inline-css 执行此操作:

<?php
    class QuakeColour {
        private static $colours = array(
            1 => 'red',
            2 => 'lime',
            3 => 'yellow',
            4 => 'blue',
            5 => 'cyan',
            6 => 'magenta',
            7 => 'white'
        );

        private static function Replace($matches) {
            return '<span style="color: ' . self::$colours[$matches[1]] . '">' . $matches[2] . '</span>';
        }

        public static function Parse($string) {
            return preg_replace_callback('/\^([1-7])([^\^]+)/', 'QuakeColour::Replace', $string);
        }
    }

    $string = '^1Flo^2wer^3Po^4wer';
    var_dump(QuakeColour::Parse($string));
?>

哪个输出

string(144) "<span style="color: red">Flo</span><span style="color: lime">wer</span><span style="color: yellow">Po</span><span style="color: blue">wer</span>"

正则表达式尸检:

  • \^一个文字^字符。需要像^正则表达式字符一样进行转义。
  • ([1-7])匹配从 1 到 7 的数字的捕获组
  • ([^\^]+)一个捕获组匹配 ^字符的字符,重复 1 次或多次
于 2013-10-24T15:07:47.250 回答
1

即使您至少应该在提出问题之前尝试一些事情..这是一个关于如何做到这一点的基本算法。

explode('^', $my_string)
foreach element in the exploded array:
    extract the first character and asociate it with a color
    print "<span style='background-color:" . $color . "'>" . $text . "</span>"

这可能会给你一个大致的想法如何做到这一点。希望这可以帮助

于 2013-10-24T15:10:31.130 回答
0

在 ^X 符号上拆分字符串 检索每个部分的 X 打印 content_of_part_till_next_^ 和

你应该完成了

很容易做一个虚拟的东西,但你会通过这样做来学习它:

首先尝试拆分 ^ 并使用字符串操作进行处理。尝试explode() 或正则表达式

于 2013-10-24T15:05:47.920 回答