0

我有一个从数据库中提取数据的脚本,根据提取的信息,我想给它着色

我想这样做,如果提取的数据是

&cTe&bst

它用

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

但我还需要确保我可以添加越来越多的东西。

我也希望它是一个函数,所以我可以简单地做

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

我正在使用 CodeIgniter

4

3 回答 3

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;
}

简单易用。

于 2012-05-01T04:53:54.217 回答
0

不要<font>像那样重复使用标签,而是将 a<span>与样式表一起使用。

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

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

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

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

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

于 2012-05-01T04:45:27.033 回答
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>';
}

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

于 2012-05-01T04:46:32.323 回答