検索フォームがあり、いずれかのページの本文内にある場合はキーワードを強調表示します。私が直面しているのは、大文字と小文字を区別しない問題です。ユーザーが「SearchMe」を検索すると、本文に正確な文字列「SearchMe」が含まれている場合、それが強調表示されます。しかし、ユーザーが「searchme」と書くと、関数に対して undefined offset : 1 エラーが発生し、クエリを出力して強調表示するだけで、本体内のものは削除されないため、重複していると考えてください。なぜそれが起こるのですか?どうすれば修正できますか?
function getSearchResult($str, $query, $numOfWordToAdd) {
list($before, $after) = explode($query, $str);
$before = rtrim($before);
$after = ltrim($after);
$beforeArray = array_reverse(explode(" ", $before));
$afterArray = explode(" ", $after);
$countBeforeArray = count($beforeArray);
$countAfterArray = count($afterArray);
$beforeString = "";
if($countBeforeArray < $numOfWordToAdd) {
$beforeString = implode(' ', $beforeArray);
}
else {
for($i = 0; $i < $numOfWordToAdd; $i++) {
$beforeString = $beforeArray[$i] . ' ' . $beforeString;
}
}
$afterString = "";
if($countAfterArray < $numOfWordToAdd) {
$afterString = implode(' ', $afterArray);
}
else {
for($i = 0; $i < $numOfWordToAdd; $i++) {
$afterString = $afterString . $afterArray[$i] . ' ';
}
}
$string = $beforeString . ' <span class="underline"> ' . $query . ' </span> ' . ' ' . $afterString;
return $string;
}
これをどのように呼ぶか:
echo getSearchResult($result->body,$keywords,30);