为搜索词提供黄色背景颜色

时间:2010-08-25 18:09:24

标签: php css

下面的函数将搜索字词$find换成粗体。它工作得很好。但是,我想这样做,它不是将$find放在粗体中,而是给它一个黄色背景,就像CSS属性background-color:#FFFF00;一样。我怎么能这样做?

提前致谢,

约翰

功能:

function highlight($text, $words) {
    preg_match_all('~\w+~', $words, $m);
    if(!$m)
        return $text;
    $re = '~\\b(' . implode('|', $m[0]) . ')\\b~i';
    return preg_replace($re, '<b>$0</b>', $text);
}

PHP / HTML:

echo '<td class="sitename1search"><a href="http://www...com>'.highlight($row["title"], $find)).'</a></td>';

CSS:

.sitename1search { width: 800px;
            font-family: Arial, Helvetica, sans-serif;
            font-weight: normal;
            font-size: 12px;
            overflow:hidden !important;
            color: #000000;
            padding-bottom: 0px;

}

.sitename1search a{ width: 350px;
            font-family: Arial, Helvetica, sans-serif;
            font-weight: normal;
            font-size: 12px;
            overflow:hidden !important;
            color: #004284;
            padding-bottom: 0px;

}

2 个答案:

答案 0 :(得分:5)

替换

return preg_replace($re, '<b>$0</b>', $text);

使用

return preg_replace($re, '<span style="background-color:#FFFF00;">$0</span>', $text);

答案 1 :(得分:5)

只需在PHP中添加class属性:

function highlight($text, $words) {

    // your php code
    return preg_replace($re, '<span class="found-term">$0</span>', $text); // changed line
}

并将其添加到您的CSS文件中:

.found-term { 
  background-color:#FFFF00;
  font-weight: bold; 
}

这比PHP中的style更好 - 仅仅因为逻辑和设计的冲突主要是坏主意。