带有数组

时间:2016-06-20 09:40:45

标签: php

我有一个小巧的PHP脚本,可以完美地运行,当一个人在表单字段中输入完全匹配时,我的PHP脚本将重定向到一个网站。

但是,现在我想学习如何添加相同的功能,但不是在一个精确的短语上,而是在一个单词数组上。例如,如果一个人输入包含任何单词“cake,batter,and red dye”的查询,则该脚本将重定向到一个网页(例如,如何仅使用红色染料和黄油制作蛋糕面糊)但是如果查询其中有绿色染料,然后脚本将重定向到另一个页面。

以下是我现在对完全匹配案例的代码:

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

1 个答案:

答案 0 :(得分:0)

如果您希望使用switch语句保留yor设计,则可以委派案例定义 一个功能。

此函数将接受搜索查询并返回案例名称。

您还需要为每个案例手动定义关键字。这可以通过其他功能完成。

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

此解决方案非常简单,只为您提供了如何处理的提示。 它只处理单词而不是表达式。 您需要处理正确的搜索查询清理和拆分。