我想这样做,以便当我输入例如“你好,我希望你有一个美好的一天再见”时,它只会突出'你好'和'再见'。我该怎么做呢?
因为目前它的整个线条都以黄色突出显示,这不是我想要的。
以下是我的代码:
<?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>';
?>
答案 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>
标记)。
您可以在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
。