如何在PHP中突出显示替换的单词?

时间:2013-02-14 12:24:42

标签: php highlighting

我想这样做,以便当我输入例如“你好,我希望你有一个美好的一天再见”时,它只会突出'你好'和'再见'。我该怎么做呢?

因为目前它的整个线条都以黄色突出显示,这不是我想要的。

以下是我的代码:

<?php
$words = $_POST['words'];
$words = preg_replace('/\bHello\b/i', 'Bonjour', $words);
$words = preg_replace('/\bbye\b/i', 'aurevoir', $words);
echo '<FONT style="BACKGROUND-COLOR: yellow">'.$words.'</font>';
?>

4 个答案:

答案 0 :(得分:2)

<style type="text/css">
.highlight {
   background: yellow;
}
</style>
<?php
$words = $_POST['words'];
$words = str_ireplace('Hello', '<span class="highlight">Bonjour</span>', $words);
$words = str_ireplace('bye', '<span class="highlight">aurevoir</span>', $words);
echo $words;
?>

答案 1 :(得分:1)

尝试这样的事情:

<?php
$words = $_POST['words'];
$words = str_replace("hello", "<span class=\"highlight\">hello</span>", $words);
$wirds = str_replace("bye", "<span class=\"highlight\">bye</span>", $words);

print($words);

?>

// CSS FILE
.highlight {
    background-color: yellow;
}

这将在黄色背景颜色周围&#34;你好&#34;和&#34; bye&#34;在输出中。

答案 2 :(得分:1)

您的问题

您的最后一行,即回显您的结果的行是错误的,因为您将整个句子包装在突出显示的上下文中(<font>标记)。

解决方案

  1. 你需要解析原来的句子;
  2. 将您的关键字打包在突出显示的上下文中。
  3. 您可以在preg_replace()功能中执行此操作。我还建议使用<mark> tag,其目标是在上下文中指出相关性。

    代码

    <?php 
    $original_sentence = $_POST['words'];
    $highlight_sentence = $original_sentence; 
    $word_to_highlight = array('Hello', 'Bye'); // list of words to highlight
    
    foreach ($word_to_highlight as $word) {
      $pattern = printf('/\b%s\b/i', $word); // match a different word at each step
      $replace_by = printf('<mark>%s</mark>', $word); // replacement is updated at each step
      $highlight_sentence = preg_replace($pattern, $replace_by, $words);
    }
    ?>
    
    <style type="text/css">
    mark {
       background: #ffc;
    }
    </style>
    

答案 3 :(得分:0)

是的,这种方法似乎有道理,但font html标记已过时,请改用span