我正在构建一个搜索文件,用<span>
标记包装搜索到的文本,我的代码运行正常:
str_ireplace($q,'<span>'.$q.'</span>',$row[name]);
问题是,如果用户搜索Tom
,则会显示Tom
这很酷,但如果他们因tom
而放入str_ireplace
,则会显示tom
tOm aRnFeLd
,这有意义吗?真正的问题是如果有人输入tOm aRnFeLd
虽然它会搜索好,但美学会显示在页面上{{1}}
如何保留两个字符串的大写字母和小写字母?有没有更好的方法从字符串中包装不区分大小写的文本?
答案 0 :(得分:0)
答案 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行来缩短你的代码。
或将此作为方法添加到字符串操作类。