首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带数组的PHP开关

带数组的PHP开关
EN

Stack Overflow用户
提问于 2016-06-20 17:40:45
回答 1查看 59关注 0票数 0

我有一个小的PHP脚本,可以完美地工作,当一个人输入一个精确的匹配到一个表单字段,我的PHP脚本将重定向到一个网站。

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

下面是我现在拥有的精确匹配大小写的代码:

代码语言:javascript
复制
<?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;
    }
    ?>
EN

回答 1

Stack Overflow用户

发布于 2016-06-20 23:31:23

如果您希望使用switch语句进行设计,则可以将case定义委托给一个函数。

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

您还需要手动定义每个案例的关键字。这可以由另一个函数来完成。

代码语言:javascript
复制
$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;
}

这个解决方案非常简单,只给你一个提示,你可以如何处理。它只处理单词,不处理表达式。您需要注意适当的搜索查询清理和拆分。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37919202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档