3

我有一个在下面编码的搜索功能,我想知道是否可以保留原始格式。例如,如果我有以下文本,“你好,我是 PHP 新手”,并且在我的搜索框中输入小写“php”,在结果中它会将原来的大写“PHP”更改为小写“php”。无论用户搜索 PhP 还是 pHp 等,是否可以将字符串保留为 PHP 的原始状态?

这是包含'str_ireplace'的函数......

function boldText($text, $kword) {
    return preg_replace('/($kword)/i', "<strong><font color='Red'>$kword</font></strong>", $text);

这就是它的名字...

 echo "<td width = 130px><b>".boldText($info['company_name'], $kword) . "</b></td> ";
 echo "<td width = 60px>".boldText($info['section_name'], $kword) . " </td>"; 
 echo "<td width = 300px>".boldText($info['question'], $kword) . " </td>";
 echo "<td width = 600px>".boldText($info['answer'], $kword) . " </td></tr>"; 

谢谢

4

2 回答 2

3

使用正则表达式。修饰符i代表不区分大小写

echo preg_replace('/(php)/i', "<strong><font color='Red'>$1</font></strong>", 'I am new to pHp')
// returns "I am new to <strong><font color='Red'>pHp</font></strong>"

在您的功能的上下文中:

function boldText($text, $kword) {
    return preg_replace('/('.$kword.')/i', "<strong><font color='Red'>$1</font></strong>", $text);
}

单引号字符串不解析里面的变量!

所以你需要'/('.$kword.')/i'"/($kword)/i"

内部双引号字符串变量被解析,但总是要注意奇怪的副作用,奇怪的组合。

于 2012-09-26T15:00:56.813 回答
2

代码

$s = 'test Test teSTing ...';
echo preg_replace('~(test)~i', '<b>$1</b>', $s);

输出

测试 测试 测试...

于 2012-09-26T15:00:31.737 回答