2016-06-20 19 views
0

人が完全一致をフォームフィールドに入力すると、PHPスクリプトがWebサイトにリダイレクトされるように、私は完璧に動作する小さなPHPスクリプトを持っています。配列を持つPHPスイッチ

しかし、ここでは同じ機能を追加する方法を学びたいと思いますが、正確なフレーズではなく単語の配列に追加する方法を学びたいと思います。たとえば、「ケーキ、バッター、赤の染料」のいずれかを含むクエリを入力した場合、スクリプトはWebページにリダイレクトされます(たとえば、赤い染料とバターのみを使用してケーキバッターを作成する方法)それに緑の染料があると、スクリプトは別のページにリダイレクトされます。ここで

は、私は完全一致の場合のために今持っているコードは次のとおりです。

<?php 
switch ($_REQUEST['zip']) { 
case 'where is cape lookout': 
case 'how far is cape lookout': 
header("Location: http://www.example.com/cape-lookout"); 
break; 
case 'where is cape hatteras': 
case 'how far is cape hatteras': 
    header("Location: http://www.example.com/cape-hatteras"); 
    break; 
default: 
    header("Location: http://www.example.com/search-404"); 
    break; 
    } 
    ?> 
+2

Googleカスタム検索のようなものをあなたのサイトにドロップするほうが、(本当に単純なレベルで)より良いことでしょう。 – CD001

+0

この種の検索のためのコードの作成には多くの人工知能が関わっています*赤い染料とバターだけを使ってケーキのバッターを作るにはどうすればいいのですか? –

答えて

0

あなたはswitch文でヨールデザインを維持したい場合は、関数に症例定義 を委任することができます。

この関数は検索クエリを受け入れ、ケース名を返します。

各ケースのキーワードも手動で定義する必要があります。これは別の関数で行うことができます。

$query = "How do I make cake batter using only red dye and butter"; 

function defineCase($query) 
{ 
    //Split the search query by a space character 
    $queryArray = explode(' ', $query); 
    //Iterate through the search cases 
    foreach (getCases() as $case => $keywords) { 
     //if all the search terms are present, return the case name 
     if (count(array_diff($keywords, $queryArray)) === 0) { 
      return $case; 
     } 
    } 
} 

function getCases() 
{ 
    //Define here the keywords that must be present in the search query 
    return [ 
     'cakes' => ['cake', 'batter', 'red', 'dye'], 
     'pies' => ['flour', 'pastry', 'crust'] 
    ]; 
} 

$case = defineCase($query); 

switch ($case) { 
    case 'cakes': 
     //process 
     break; 
} 

このソリューションは非常にシンプルで、どのように処理することができるかを示唆しています。 これは単語だけを処理し、式は処理しません。 適切な検索クエリのサニタイズと分割を行う必要があります。

関連する問題