【发布时间】:2012-04-23 19:47:02
【问题描述】:
我有一个提供关键字搜索的网站。用户可以通过从一组显示为超链接的预定义关键字中进行选择或使用同一页面上的搜索表单来执行搜索。
当用户搜索俄罗斯蓝猫时,页面网址中会添加以下内容:
如果使用预定义的 hyperlink 搜索词,则会将 ?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 代码行可以正常工作并检索所有三个关键字。在这种情况下,检索词 Russian Blue Cat。
process.php 文件中包含的上述 $_GET 代码行无法正常工作,只能检索三个关键字中的第一个。在这种情况下,只检索到单词 Russian。
是否有一种简单或适当的方法来解决此问题,以便正确检索所有关键字?
提前谢谢你。
【问题讨论】:
-
我不清楚搜索词是如何从 index.php 传递到 process.php
-
请在两个文件中显示
var_dump($_GET)。这听起来对我来说更像是一个糟糕的要求,带有未转义的空格。 -
对于超链接,传递为 russian blue cat 对于搜索表单,它们传递通过表单的
-
var_dump($_GET) 用于两个文件。对于 index.php,array(2) { ["topic"]=> string(25) "LA_Los_Angeles-California" ["keywords"]=> string(12) "russian blue" },对于 process.php,数组(5){[“XMLFILE”]=>字符串(84)“mysite.com/search/…”[“模板”]=>字符串(39)“mysite.com/template.html”[“MAXITEMS”]=>字符串(3)“100 " ["topic"]=> string(25) "LA_Los_Angeles-California" ["keywords"]=> string(7) "russian" }