我有一个从数据库中提取数据的脚本,并根据提取的信息,我想要着色它和东西
我想这样做,如果拉出的数据是
&cTe&bst
将其替换为
<font style="color:#F55">Te</font><font style="color:#5FF">st</font>
但我还需要确保能够添加更多内容。
我也希望它是一个功能所以我可以简单地做
$this->colorize('&cTe&bst');
我正在使用CodeIgniter
答案 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>';
}
免责声明:未经测试......