使用php

时间:2017-09-01 19:25:19

标签: 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</span>
<span style="background-color:yellow">notes to be yellow</span>
<span style="background-color:green"> notes to be green</span>

2 个答案:

答案 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";
    }
}

https://3v4l.org/9YDAX

编辑注意到我忘记了字符串中可能没有颜色标签 添加了无颜色音符的回声

答案 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>';
}

将颜色存储在关联数组中可以使将来添加更多颜色变得容易。

这可能有点乱,但它应该适合你。