我有一个小的PHP脚本,可以完美地工作,当一个人输入一个精确的匹配到一个表单字段,我的PHP脚本将重定向到一个网站。
然而,现在我想学习如何添加相同的功能,但不是在一个确切的短语上,而是在一个单词数组上。例如,如果一个人输入的查询包含任何单词“蛋糕、面糊和红色染料”,脚本将重定向到一个网页(例如,如何仅使用红色染料和黄油制作蛋糕面糊),但如果查询中包含绿色染料,则脚本将重定向到不同的页面。
下面是我现在拥有的精确匹配大小写的代码:
<?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;
}
?>发布于 2016-06-20 23:31:23
如果您希望使用switch语句进行设计,则可以将case定义委托给一个函数。
此函数将接受搜索查询并返回案例名称。
您还需要手动定义每个案例的关键字。这可以由另一个函数来完成。
$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;
}这个解决方案非常简单,只给你一个提示,你可以如何处理。它只处理单词,不处理表达式。您需要注意适当的搜索查询清理和拆分。
https://stackoverflow.com/questions/37919202
复制相似问题