使用preg_replace为事物着色

时间:2012-05-01 04:26:21

标签: php codeigniter preg-replace

我有一个从数据库中提取数据的脚本,并根据提取的信息,我想要着色它和东西

我想这样做,如果拉出的数据是

&cTe&bst

将其替换为

<font style="color:#F55">Te</font><font style="color:#5FF">st</font>

但我还需要确保能够添加更多内容。

我也希望它是一个功能所以我可以简单地做

$this->colorize('&cTe&bst');

我正在使用CodeIgniter

3 个答案:

答案 0 :(得分:2)

function colorize($in)
{
    $Colors = array(
        "b" => "#000",
        "w" => "#FFF",
        "g" => "#AAA"
    );

    $in = "<span>" . $in;

    foreach($Colors as $Prefix => $Color)
    {
        $in = str_replace( "&" . $Prefix, "</span><span style='color: " . $Color . "'>", $in );
    }

    $in .= "</span>";
    return $in;
}

简单易用。

答案 1 :(得分:0)

不要像这样重复使用<font>标记,而是使用带有样式表的<span>

<span class="blue">Te</span><span class="red">st</span>

.blue {
    font-color: #3F1515;
}

.red {
    font-color: #153F3F;
}

这将使其更具可读性,并使HTML的大小也小得多。

对于正则表达式,请尝试&.(.*?)(?=&|$) http://regexr.com?30qid

答案 2 :(得分:0)

无需使用preg_replace,只需explode &字符串,然后从那里开始:

$colors = array('c' => '#F55', 'b' => '#5FF');

$str = '&cTe&bst';

foreach (explode('&', $str) as $text)
{
    $colorCode = $text[0];
    $actualText = substr($text, 1);
    echo '<span style="color:' . $colors[$colorCode] . '>' . $actualText . '</span>';
}

免责声明:未经测试......