0

ユーザーがテーブルで何かを見つけることができる検索サイトを作成しています。

検索はうまく機能しますが、ユーザーが代わりに Google または Bing の結果を検索できるようにする機能が必要です。クエリの後に / を指定することで、特定の検索エンジンを使用したいことを確認してもらいたいと思います。

たとえば、何か /googleを検索すると、その検索結果が Google に送信されます。ビングについても同様です。

4

3 に答える 3

2

正規表現を使用して、クエリ文字列のこれらの部分を抽出できます。例えば

preg_match_all('(?=^|\s)/[a-z]+\b', $query, $matches)

スラッシュで始まり、その後に 1 つ以上の文字が続くすべてのトークンをクエリから引き出します。その後、これらのトークンを読み、それぞれに対して実行するアクションを決定できます。

この正規表現ソリューションは、これらの (スペースで区切られた) トークンをクエリ文字列のどこにでも表示でき、さらにはクエリ文字列に複数のトークンを含めることができるため、堅牢です。

を使用preg_replace(...)してクエリからこれらのトークンを取り除き、残りの検索テキストを処理できるようにすることもできます。

于 2011-02-23T01:32:54.820 に答える
2

Google と Bing、または少数の検索エンジンを探している場合は、次の方法を試すことができます。

if (strpos('/google',$_GET['q']) !== false) {
    header('Location: http://www.google.com/q='.str_replace('/google','',$q).'+site:example.com');
    exit;
} else if (strpos('/bing',$_GET['q']) !== false) {
    header('Location: http://www.bing.com/search?q='.str_replace('/bing','',$q).'+site:example.com');
    exit;
}

テキストが PHP の出力バッファに出力される前に、これをページに追加する必要があることに注意してください (header() 関数呼び出しのため)。これは、PHP がページに何かを書き込むように指示される前であることを意味します。そうしないと、PHP ページでエラーが発生します。

于 2011-02-23T01:39:08.823 に答える
0

preg_match を使用して、検索文字列の最後の部分をチェックします/search_engine

存在する場合は、それらをリダイレクトします

http://www.google.com/search?q=site%3Adomain.com+search+string

于 2011-02-23T01:33:30.030 に答える