3

以下にコード化された検索機能がありますが、元の書式を維持できるかどうか疑問に思っていました。たとえば、「こんにちは、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>"; 

ありがとう

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 に答える