使用str_ireplace时保留大小写?

时间:2010-01-22 17:30:27

标签: php string text replace textwrapping

我正在构建一个搜索文件,用<span>标记包装搜索到的文本,我的代码运行正常:

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

问题是,如果用户搜索Tom,则会显示Tom这很酷,但如果他们因tom而放入str_ireplace,则会显示tom tOm aRnFeLd,这有意义吗?真正的问题是如果有人输入tOm aRnFeLd虽然它会搜索好,但美学会显示在页面上{{1}}

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

2 个答案:

答案 0 :(得分:0)

  1. 获取词组长度strlen()
  2. 使用stripos()
  3. 查找词组的出现次数
  4. 在文字的N个字符后插入文本<span>(其中N是第2点的结果)
  5. 在文本的N + M字符后插入文本</span>(其中N是第2点的结果,M是第1点的结果)
  6. 继续点2-4(使用strpos()的第三个参数 - 偏移

答案 1 :(得分: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行来缩短你的代码。

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