【问题标题】:Retrieving Multiple Words using PHP's $_GET function使用 PHP 的 $_GET 函数检索多个单词
【发布时间】: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" }

标签: php get


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 谢谢,但是你说的“%20”爆炸或“+”爆炸是什么意思?
  • explode("%20", $_GET['keywords']);
  • 我是把上面的爆炸代码放在前面还是后面 if(empty($_GET['keywords'])){$keywords = '';} else {$keywords = $_GET[ '关键字'];} ?
  • 检查上面。这将是在您检索到“$keywords”之后。
  • 我使用了您发布的代码,但 process.php 仍然只检索第一个单词。 if(empty($_GET['keywords'])){$keywords = '';} else {$keywords = $_GET['keywords'];} $keyword = array(); if(stripos($keywords,"%20")) {$keyword = explode("%20",$keywords);}else if(stripos($keywords,"+")) {$keyword = explode("+",$keywords);}
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多