2016-06-20 4 views
0

사람이 양식 필드에 완전 일치 항목을 입력하면 내 PHP 스크립트가 웹 사이트로 리디렉션되도록 완벽하게 작동하는 작은 PHP 스크립트가 있습니다.배열이있는 PHP 스위치

그러나 지금은 동일한 기능을 추가하는 방법을 배우고 싶지만 정확한 구문은 아니지만 단어 배열에 대해 배우고 싶습니다. 예를 들어, 사람이 "케익, 타자 및 빨간 염료"라는 단어가 들어있는 검색어를 입력하면 스크립트는 웹 페이지로 리디렉션됩니다 (예 : 빨간 염료 및 버터 만 사용하여 케이크 배터를 만드는 방법). 그러나 검색어 녹색 염료가 있으면 스크립트가 다른 페이지로 리디렉션됩니다. 당신이 switch 문을 yor 디자인을 유지하려면

<?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

, 당신은 함수에 경우 정의 을 위임 할 수 있습니다 : 여기

가 정확히 일치하는 경우에 지금 가지고있는 코드입니다.

이 함수는 검색 쿼리를 수락하고 사례 이름을 반환합니다.

또한 각 사례에 대한 키워드를 수동으로 정의해야합니다. 이것은 다른 기능에 의해 수행 될 수 있습니다.

$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; 
} 

이 솔루션은 매우 간단하며 처리 방법에 대한 힌트 만 제공합니다. 표현식이 아닌 단어 만 처리합니다. 적절한 검색 쿼리 위생 및 분할을 처리해야합니다.