用php突出显示HTML CSS中的文本字符串
我正在寻找一种快速的方法来突出显示文本字符串,如果它有一个标志,即(-R)作为它的第一个符号,从开始到行尾(\n) 函数将被赋予一个由多个字符串组成的文本,这些字符串用“\n”分隔,可能包含也可能不包含任何标志。大概是这样的:用php突出显示HTML CSS中的文本字符串,php,html,css,regex,Php,Html,Css,Regex,我正在寻找一种快速的方法来突出显示文本字符串,如果它有一个标志,即(-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&l
-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>
注释为红色
钞票是黄色的
钞票是绿色的
您可以尝试以下链接:
$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>';
}
$notes=array(
“-Rnote”,
“-Gnote”,
“-Ynote”,
“-Rnote1”,
“-Gnote1”,
'-Ynote1',
);
$colors=数组(
'R'=>'红色',
“G”=>“绿色”,
“Y”=>“黄色”,
);
foreach($notes作为$note){
$color_key=substr($note,1,1);
$note_string=substr($note,2);
$bg_color=array_key_exists($color_key,$colors)?$colors[$color_key]:'';
echo“”.$note\u string.
”;
}
将颜色存储在关联数组中可能会使将来添加更多颜色变得容易
这可能有点混乱,但应该对你有用。根据马特的回答,我做了这个回答。
请记住,这是马特的想法,它的基础是,所以如果你喜欢的话,别忘了更新他的答案 我使用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";
}
}
$notes=array(
“-Rnote”,
“-Gnote”,
“-Ynote”,
“-Rnote1”,
“-Gnote1”,
'-Ynote1',
);
//上述阵列可替换为:
//$notes=explode(“\n”,$text);
$colors=数组(
'-R'=>“红色”,
'-G'=>“绿色”,
'-Y'=>“黄色”,
);
foreach($notes作为$note){
If(isset($colors[substr($note,0,2)]){
echo str_替换(substr($note,0,2),“”,$note)。“\n”;
}否则{
回显$note。“\n”;
}
}
Edit注意到我忘记了字符串中可能没有颜色标记。添加了一个无颜色注释的回音如果页面已经加载,那么使用javascript会更好。您可以使用switch语句和susbtring来获取字母。此外,如果字母可能以标志开头,也可能不以标志开头,那么是什么阻止用户在其注释之前输入-R并可能弄乱某些内容?您应该尝试自己编写代码。如果您有问题,请发布您尝试过的内容,并清楚解释哪些内容不起作用,然后提供。读一个好问题。一定要认真阅读,好的!但我认为应该是这样的,在空格中输出“音符”,你可能是对的。我想我只是为了测试才这么做的,但忘了把它放回去。对不起,我更新了链接,我不小心用了$note,一个你已经用过的变量。我想你应该编辑你的答案。或者添加第二行“选项2”代码。我相信你在第一次编辑时也会得到一个徽章。永远不要发布你认为“可能有点乱”的答案。您的方法将使
BROTHER
变成红色文本,这是更好的非正则表达式方法。查找数组是执行此任务的最佳做法。