2012-07-12 110 views
0

这是一个网站搜索脚本。如果我使用str_ireplace,则会改变搜索结果的大小写。例如,如果查询字符串是“搜索字符串”,并且找到包含“搜索字符串”的记录,则后者将丢失其大小写。任何方式在这个?如何在不改变大小写的情况下使用str_replace?

我需要合并搜索结果的突出显示。

问题是找不到字符串或突出显示。我可以使用str_ireplace来实现这一点。但是这会失去大写。我想要的是保持大写字母不变。

+1

为什么在不希望字符串被修改时使用字符串替换函数?使用一个函数,像'stripos'一样在字符串内搜索,而不是用来修改数据的函数。或者,发布你正在使用的代码,以便我们可以看到到底发生了什么问题。 – Jazz 2012-07-12 21:46:07

+0

这是一个搜索脚本,突出显示搜索结果中出现的用户提交的单词。对于str_replace,它没有突出显示由于大写而出现的每个单词,但对于str_ireplace,它突出显示了所有单词,但是它们丢失了所有的大写字母。也许preg_match会更好。 – reformed 2012-07-12 21:54:00

回答

1

您可以使用preg_replace

$haystack = 'Some text here.'; 
$str = preg_replace("#(.*)(text)(.*)#i", '\1<b>\2</b>\3', $haystack); 
+0

这工作,谢谢。 – reformed 2012-07-12 22:04:04

0

代替使用stripos进行搜索。

if (stripos($haystack, $needle) !== false) 
    echo $needle, ' found!'; 
+0

我将需要搜索结果的突出显示功能。 – reformed 2012-07-12 21:45:12

+1

然后使用preg_replace。 – m02ph3u5 2012-07-12 21:46:41

0

只需使用str_replace而不是str_ireplace。

+0

是的,但然后“搜索字符串”不会拿起“搜索字符串”或“搜索字符串” – reformed 2012-07-12 21:44:43

+1

尝试使用preg_replace与'我'修饰符。 – 2012-07-12 21:48:30