我正在寻找一种快速方法来突出显示一个文本字符串,如果它有一个标志,即。( - R)作为其中的第一个符号,从开头到行结束(\ n)。
该函数将被赋予一个用“\ n”分隔的多个字符串的文本,这些字符串可能包含也可能不包含任何标志。像这样:
-Rnotes to be red
-Ynotes to be yellow
-G notes to be green
在这个函数的输出中,我需要得到这个:
<span style="background-color:red">notes to be red</span>
<span style="background-color:yellow">notes to be yellow</span>
<span style="background-color:green"> notes to be green</span>
答案 0 :(得分:1)
根据马特的回答,我做了这个答案 请记住,马特的想法是基于这样的,所以如果你愿意的话,不要忘记他的回答。
我使用str_replace将-R
(或Y或G)替换为span标记,并使用-R
作为颜色数组中的键。
然后我只添加结束范围标记。
$notes = array(
'-Rnote',
'-Gnote',
'-Ynote',
'-Rnote1',
'-Gnote1',
'-Ynote1',
);
// Above array can be replaced by:
// $notes = explode("\n", $text);
$colors = array(
'-R' => 'red',
'-G' => 'green',
'-Y' => 'yellow',
);
foreach ($notes as $note ) {
If (isset($colors[substr($note,0,2)])){
echo str_replace(substr($note, 0, 2), '<span style="background-color:' . $colors[substr($note, 0, 2)] . '">', $note) . "</span>\n";
}Else{
Echo $note ."\n";
}
}
编辑注意到我忘记了字符串中可能没有颜色标签 添加了无颜色音符的回声
答案 1 :(得分:0)
你可以尝试一下这个链接:
$notes = array(
'-Rnote',
'-Gnote',
'-Ynote',
'-Rnote1',
'-Gnote1',
'-Ynote1',
);
$colors = array(
'R' => 'red',
'G' => 'green',
'Y' => 'yellow',
);
foreach ($notes as $note ) {
$color_key = substr($note, 1, 1);
$note_string = substr($note, 2);
$bg_color = array_key_exists($color_key, $colors) ? $colors[$color_key] : '';
echo '<p style="background-color:' . $bg_color . '">' . $note_string . '</p>';
}
将颜色存储在关联数组中可以使将来添加更多颜色变得容易。
这可能有点乱,但它应该适合你。