2010-01-22 78 views
1

我建立将包装与<span>标签搜索关键字进行搜索,我有这样的代码工作确定:使用str_ireplace时保留大小写吗?

str_ireplace($q,'<span>'.$q.'</span>',$row[name]); 

的问题是,如果Tom用户搜索是将显示Tom这是很酷,但如果由于str_ireplace而投入tom,它会显示tom,这是否有意义?真正的问题是,如果有人输入tOm aRnFeLd虽然它会搜索好,但美学实际上会显示在页面上tOm aRnFeLd

如何保留两个字符串的大写字母和小写字母?有没有更好的方法来从字符串中打包不区分大小写的文本?

回答

0

使用stristr摆脱大海捞针,不区分大小写

$keyword_caseRetained_all = stristr($excerpt, $keyword); 

但返回针和干草堆的休息,所以你必须使用SUBSTR仅保持针状部分。开始在位置0,起床关键词的长度

$keyword_caseRetained = substr($keyword_caseRetained_all, 0, strlen($keyword)); 

现在使用该变量的str_ireplace函数内部

$excerpt = str_ireplace($keyword, '<em>'.$keyword_caseRetained.'</em>', $excerpt); 

一旦你知道了这一点,你可以在一个不错的大鼠结合线1和2缩小您的代码。

或将此作为方法添加到字符串操作类中。

0
  1. 使用stripos()
  2. 插入文本<span>文本的n字符之后获取短语长度短语的strlen()
  3. 查找发生(其中N是从点#结果2)
  4. 插入文本</span>后文本n值+ M字符(其中N是来自点#2的结果并且M是来自点#1的结果)
  5. 继续点2-4(使用strpos()的第三个参数-偏移量
相关问题