0

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

当用户搜索Russian Blue Cat时,页面 URL 中会添加以下内容:

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

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

如果使用搜索表单,则?keywords=Russian+Blue+Cat将添加到 URL,如下所示:

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

下面的 $_GET 代码行放置在两个PHP 文件中,一个是包含预定义超链接搜索词和搜索表单的原始index.php文件,另一个是名为process.php的 PHP 文件,它利用另一个进程的关键字。

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

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

上面包含在process.php文件中的 $_GET 行代码不能正常工作,只能检索三个关键字中的第一个。在这种情况下,仅检索单词Russian 。

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

先感谢您。

4

1 回答 1

0

检查字符串“%20”,如果存在,按“%20”分解。否则,请检查是否存在加号并改为使用它进行爆炸。

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

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

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

'$keyword' 将在一个数组中包含您的关键字。

于 2012-04-23T20:02:25.057 回答