0

キーワード検索を提供するサイトがあります。ユーザーは、ハイパーリンクとして表示される事前定義されたキーワードのセットから選択するか、同じページの検索フォームを利用して検索を実行できます。

ユーザーがRussianBlueCatを検索すると、ページのURLに次のURLが追加されます。

事前定義されたハイパーリンク検索用語を使用する場合、 ?keywords = Russian%20Blue%20Catが次のようにURLに追加されます。

  http://mydomain.com/index.php?keywords=Russian%20Blue%20Cat

検索フォームを使用する場合、?keywords = Russian + Blue+Catが次のようにURLに追加されます。

 http://mydomain.com/index.php?keywords=russian+blue+cat

次の$_GET行のコードは、 2つのPHPファイル内に配置されます。元のindex.phpファイルには、事前定義されたハイパーリンク検索用語と検索フォームの両方が含まれ、別のPHPファイルは別のプロセスのキーワードを利用するprocess.phpと呼ばれます。

  if(empty($_GET['keywords'])){$keywords = '';} else {$keywords = $_GET['keywords'];}

index.phpファイルに含まれている上記の$_GET行のコードは正しく機能し、3つのキーワードすべてを取得します。この場合、RussianBlueCatという単語取得されます。

process.phpファイルに含まれている上記の$_GET行のコードは正しく機能せず、3つのキーワードのうち最初のキーワードのみを取得します。この場合、ロシア語のみが取得されます。

すべてのキーワードが適切に取得されるようにこれを修正する簡単または適切な方法はありますか?

前もって感謝します。

4

1 に答える 1

0

文字列'%20'を確認し、存在する場合は'%20'で展開します。それ以外の場合は、プラス記号の存在を確認し、代わりにそれによって爆発します。

この方法は、同じスクリプトを入力する2つのソースとは異なる入力形式に依存しません。

注意点は、文字列'%20'または文字'+'を他の形式の単語内に配置できないことです。そうしないと、異常な動作が発生します。

$keyword = array();
if(stripos($keywords,"%20")) {
    $keyword = explode("%20",$keywords);
}
else if(stripos($keywords,"+")) {
    $keyword = explode("+",$keywords);
}

「$keyword」には、キーワードが配列に含まれます。

于 2012-04-23T20:02:25.057 に答える