php字符串替换为html标记

时间:2013-10-24 15:01:10

标签: php

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

的示例

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

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

谢谢 Crouz

3 个答案:

答案 0 :(得分: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;
?>

DEMO

哪个输出:

<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次或更多次

答案 1 :(得分: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>"

这个migth让你大致了解如何做到这一点。希望这有帮助

答案 2 :(得分:0)

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

你应该完成

很容易做出虚构的东西,但你会通过这样做来学习:

首先尝试拆分^并使用字符串操作从中进行操作。 尝试explode()或regex