私は自分のサイトで自分の検索エンジンを作成しようとしています。キーワードを含むDBテーブルから "title"と "description"フィールドを使い、結果を表示しています。それは正常に動作しますが、 "description"の結果にそのキーワードの周りのテキストのみを表示するようにページを設定したかったのです。から"定義されていないオフセット:0"を生成するアイテムのループでコードを実行しないでください。
$description = preg_replace("/$word/","<B>$word</B>",$result[0]);
(:
$string = $s->description;
$word = $item;
preg_match("/(\w+)? ?(\w+)? ?(\w+)? ?(\w+)? ?(\w+)? ?$word ?(\w+)? ?(\w+)? ?(\w+)? ?(\w+)? ?(\w+)?/i",$string,$result);
$description = preg_replace("/$word/","<B>$word</B>",$result[0]);
問題は、これが生成することである:
A PHP Error was encountered
Severity: Notice
Message: Undefined offset: 0
Filename: search/search.php
Line Number: 21
ライン#21私はこれを行うにはStackOverflowの上のいくつかのコードを(!w00t)が発見しましたしかし、これは、いくつかの結果に対してのみこれを行います。私はまだ悪いものが共通しているものは分かっていませんが、それは動作しない1/4のようなものです。
私が試みた解決策は、変数$ descriptionがsetet()であるかどうかを確認するためにforeachループでチェックを行うことでした。
if(!isset($description)) {
if(strlen($s->description) > 200) {
$description = substr($s->description, 0, 200).'...';
} else {
$description = $s->description;
}
}
それ以外の場合、変数はすでに上で定義されています。しかし、これはチェックを行わずに$ descriptionをエコーアウトすることと何も変わりません(エラーを生成する)。
私は "未定義オフセット:0"を検索し、プログラミング用語に少しだけ圧倒されました(そのうちの私は今理解し始めています)。
これは実際に動作しているかどうか、何かチェックしていただければ幸いです。
preg_matchパターンマッチの回数は0になる可能性があります。 –
サイドノート(検索エンジンの作成を妨げないため)では、http:// sphinxsearch .com/..カスタム検索エンジンを構築するのは非常に時間がかかり、よく確立されたソリューションと同様に動作する可能性は低いです.Sphinxはphp/mysqlアプリケーションと非常に簡単に統合できます。 – SuitedSloth
私はスフィンクスで簡単に見てきましたが、自分自身に挑戦するために自分のエンジンをプログラムしたいと思っていました。私が取り組んでいるプロジェクトはペットプロジェクトであり、私が支払っているものではありません。 –