2010-07-02 249 views
0

可能重複:
highlighting search results in php/mysql突出顯示PHP

我做一個查詢的搜索,在MSSQL,像這樣:

SELECT ctext FROM Table WHERE ctext like '%filter%' 

然後,我想用php突出點擊:

function highlightme($str, $filter){ 
    $html = "<FONT style=".chr(34)."BACKGROUND-COLOR: yellow". 
    chr(34).">".$filter."</FONT></P>"; 
    $buf = str_replace($filter,$html,$str); 
    return $buf; 
} 

但是,如果過濾器是'你好',並且ctext包含'hello',SQL會帶來它,但php不會突出顯示它(我認爲它與區分大小寫有關) 而且,如果過濾器是,'hellos'和ctext包含'hello',SQL帶來了它,但是php並沒有強調它。

我該如何解決這兩件事?

+0

重複[突出顯示搜索結果在php/mysql](http://stackoverflow.com/questions/2738555/highlighting-search-results-in-php-mysql) – Gordon 2010-07-02 14:30:00

回答

1

首先,不是使用chr(34),而應該使用"\""'"'。我建議您不要使用str_replace,而是使用preg_replace,它允許您指定正則表達式模式。您可以使用i修飾符使模式不區分大小寫。

實施例:

CSS

.keyword { 
    color: yellow; 
} 

PHP

$pattern = '#(hello)#i'; 
$replacement = '<span class="keyword">\1</span>'; 
$result = preg_replace($pattern, $replacement, $input); 

另外,也可以指定模式和替換爲陣列。