我有一个提供关键字搜索的网站。用户可以通过选择显示为超链接的一组预定义关键字或在同一页面上使用搜索表单来执行搜索。
当用户搜索俄罗斯蓝猫时,会在页面网址中添加以下内容:
如果使用预定义的超链接搜索字词,则?keywords = Russian%20Blue%20Cat 会添加到网址中,如下所示:
http://mydomain.com/index.php?keywords=Russian%20Blue%20Cat
如果使用搜索表单,则?keywords = Russian + Blue + Cat 会添加到网址中,如下所示:
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代码行无法正常运行,只检索三个关键字中的第一个。在这种情况下,只会检索俄语这个词。
是否有一种简单或正确的方法可以解决这个问题,以便正确检索所有关键字?
提前谢谢。
答案 0 :(得分:0)
检查字符串'%20',如果存在,则按'%20'爆炸。否则,检查是否存在加号并由其爆炸。
此方法与输入相同脚本的两个源的不同输入格式无关。
需要注意的是,字符串'%20'或字符'+'不能出现在另一种格式的单词中,否则会出现异常行为。
$keyword = array();
if(stripos($keywords,"%20")) {
$keyword = explode("%20",$keywords);
}
else if(stripos($keywords,"+")) {
$keyword = explode("+",$keywords);
}
然后,'$ keyword'会将您的关键字包含在数组中。