我有一个小巧的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;
}
?>
答案 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;
}
此解决方案非常简单,只为您提供了如何处理的提示。 它只处理单词而不是表达式。 您需要处理正确的搜索查询清理和拆分。