2010-07-02 209 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); 

另外,也可以指定模式和替换为阵列。