【问题标题】:Highlight the text string in HTML CSS with php [closed]使用 php 突出显示 HTML CSS 中的文本字符串 [关闭]
【发布时间】:2018-02-10 21:45:44
【问题描述】:

我正在寻找一种快速突出显示文本字符串的方法,如果它有一个标志,即 (-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>

【问题讨论】:

  • 如果页面已经加载,javascript会更好
  • 正如@clearshot66 提到的使用javascript。您可以使用 switch 语句并使用 susbstring 来获取字母
  • 另外,如果它们可能以标志开头,也可能不以标志开头,是什么阻止用户在他们的笔记之前输入 -R 并可能搞砸一些事情?
  • 您应该尝试自己编写代码。在doing more research 之后,如果您有问题发布您尝试过的方法,并清楚地解释什么不起作用,并提供a Minimal, Complete, and Verifiable example。阅读How to Ask 一个好问题。请务必take the tour 并阅读this

标签: php html css regex


【解决方案1】:

你可以试试这个链接:

$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>';
}

将颜色存储在关联数组中可能便于将来添加更多颜色。

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

【讨论】:

  • 好一个!但是我觉得应该是这样3v4l.org/kTHkX在span中输出“note”
  • 你可能是对的。我想我只是为了测试而这样做而忘记将其设置回去。
  • 抱歉更新了链接我不小心用了$note,一个你已经用过的变量
  • 我认为你应该编辑你的答案。或者添加第二行“选项 2”代码。我相信您也会获得第一次编辑的徽章。
  • 永远不要发布您认为“可能有点混乱”的答案。您的方法将使用BROTHER 生成红色文本
【解决方案2】:

根据马特的回答,我做出了这个回答。
请记住,这是马特的想法,所以如果你喜欢这个,别忘了给他的答案投票。

我使用 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

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

【讨论】:

  • 这是更好的非正则表达式方法。查找数组是此任务的最佳实践。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-18
  • 2022-11-13
  • 2019-09-13
  • 2017-03-10
  • 2022-07-07
  • 1970-01-01
相关资源
最近更新 更多