我有一个从数据库中提取数据的脚本,根据提取的信息,我想给它着色
我想这样做,如果提取的数据是
&cTe&bst
它用
<font style="color:#F55">Te</font><font style="color:#5FF">st</font>
但我还需要确保我可以添加越来越多的东西。
我也希望它是一个函数,所以我可以简单地做
$this->colorize('&cTe&bst');
我正在使用 CodeIgniter
我有一个从数据库中提取数据的脚本,根据提取的信息,我想给它着色
我想这样做,如果提取的数据是
&cTe&bst
它用
<font style="color:#F55">Te</font><font style="color:#5FF">st</font>
但我还需要确保我可以添加越来越多的东西。
我也希望它是一个函数,所以我可以简单地做
$this->colorize('&cTe&bst');
我正在使用 CodeIgniter
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;
}
简单易用。
不要<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
无需使用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>';
}
免责声明:未经测试...