使用str_ireplace时保留原始字符串格式

时间:2012-09-26 14:55:07

标签: php

我有一个搜索功能,编码如下,我想知道是否可以保持原始格式。例如,如果我有以下文本,“你好,我是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>"; 

由于

2 个答案:

答案 0 :(得分:3)

使用regular expressions。修饰符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"

里面的dobule引用了字符串变量被解析,但总是意识到奇怪的副作用,有奇怪的组合。

答案 1 :(得分:2)

代码

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

输出

测试测试teST ing ...