Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用php突出显示HTML CSS中的文本字符串_Php_Html_Css_Regex - Fatal编程技术网

用php突出显示HTML CSS中的文本字符串

用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

我正在寻找一种快速的方法来突出显示文本字符串,如果它有一个标志,即(-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>
注释为红色
钞票是黄色的
钞票是绿色的

您可以尝试以下链接:

$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
变成红色文本,这是更好的非正则表达式方法。查找数组是执行此任务的最佳做法。