使用 PHP 的 $_GET 函数检索多个单词


Retrieving Multiple Words using PHP's $_GET function

>我有一个提供关键字搜索的网站。用户可以通过从一组显示为超链接的预定义关键字中进行选择来执行搜索,也可以利用同一页面上的搜索表单来执行搜索。

当用户搜索俄罗斯蓝猫时,以下内容将添加到页面 URL 中:

如果使用预定义的超链接搜索词,则 ?keywords=Russia%20Blue%20Cat 将添加到 URL 中,如下所示:

  http://mydomain.com/index.php?keywords=Russian%20Blue%20Cat

如果使用搜索表单,则 ?关键字=俄语+蓝色+猫将添加到 URL 中,如下所示:

 http://mydomain.com/index.php?keywords=russian+blue+cat

以下 $_GET 行代码放置在两个 PHP 文件中,原始索引文件.php该文件包含预定义的超链接搜索词和搜索表单,另一个称为 process 的 PHP 文件.php该文件将关键字用于另一个进程。

  if(empty($_GET['keywords'])){$keywords = '';} else {$keywords = $_GET['keywords'];}

index.php 文件中包含的上述 $_GET 代码行工作正常,并检索所有三个关键字。在这种情况下,检索到单词俄罗斯蓝猫

进程.php文件中包含的上述 $_GET 行代码无法正常工作,仅检索三个关键字中的第一个。在这种情况下,仅检索俄语一词。

有没有一种简单或正确的方法来解决此问题,以便正确检索所有关键字?

提前谢谢你。

检查字符串"%20",如果存在,则用"%20"爆炸。否则,请检查是否存在加号并改为通过它爆炸。

此方法与进入同一脚本的两个源的不同输入格式无关。

需要注意的是,字符串"%20"或字符"+"不能出现在其他格式的单词中,否则您将获得异常行为。

$keyword = array();
if(stripos($keywords,"%20")) {
    $keyword = explode("%20",$keywords);
}
else if(stripos($keywords,"+")) {
    $keyword = explode("+",$keywords);
}

然后,"$keyword"将在数组中包含您的关键字。