给搜索项赋予黄色背景色

问题描述:

下面的函数以粗体显示搜索项$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; 

} 

更换

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

随着

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

在PHP只需添加class属性:

​​3210

,并添加到您的CSS文件:

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

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

+0

+1。这一点稍微好一点,因为它保持HTML和CSS分离(这总是最佳实践)。 – Jonah 2010-08-25 18:16:35

+0

+1:我只是更新你的答案,所以你的b班的“创业期”与css“found-term”相匹配。另外,跨度在这里可能更符合语义。 – sdolan 2010-08-25 18:23:22

+0

@sdolan:感谢您的注意!我更新了代码。 – 2010-08-25 18:25:49