使用PHP explode从$ _GET创建一个单词数组

时间:2015-02-02 14:51:48

标签: php arrays explode

我在php中使用explode()时遇到问题。 我想从$_GET超全局数组中创建一个字符串数组。

网址将如下:

  

示例/ myproject.php?关键字=此是+ AN +实例

我想要一个关键字数组,所以它应该是这样的:

myArray(6) = { [0]=> string(4) "this"
               [1]=> string(2) "is"
               [2]=> string(2) "an"
               [3]=> string(7) "example" }

这是我的代码:

$stringVals = explode("+",($_GET['keywords']));
var_dump($stringVals);

这是输出:

array(1) { [0]=> string(30) "this is an example of a string" }

一个有效的例子:

$pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
var_dump($pieces);

输出:

array(6) { [0]=> string(6) "piece1" [1]=> string(6) "piece2" [2]=>
string(6) "piece3" [3]=> string(6) "piece4" [4]=> string(6) "piece5"
[5]=> string(6) "piece6" } 

我希望来自$_GET的话就像那样..

6 个答案:

答案 0 :(得分:3)

您看到的“+”符号实际上只是一个编码空间。因此,您可以使用空格正常拆分。

explode(' ', $_GET['keywords']);

如果要将其放入数据库中,请确保对其进行消毒。

答案 1 :(得分:2)

实际上你可以简单地使用:

explode(" ", $_GET['string'])

网址中的 + 符号实际上是指空格,而不是加号: - ) 这是因为url中不允许使用空格(url不能有空格),所以它实际上转换为加号。

答案 2 :(得分:1)

不要使用加号,因为您看到的“+”符号实际上只是一个编码空间。在将值从一个页面传递到另一个页面时使用URL中的逗号这里是使用逗号分隔形式在URL中发送它们后的解决方案: -

$myArray = explode(',', $_REQUEST['keywords']);

之后,您可以按照以下方式获取数据

$myArray[0]=this;
$myArray[1]=is;
$myArray[2]=an;
$myArray[3]=example;

答案 3 :(得分:0)

在正常的GET请求中,网址中的+将由网络服务器转换回空格,因此您应该在' '上爆炸。

$stringVars = explode(' ', $_GET['keywords']);

请参阅https://stackoverflow.com/a/2678602/1331451,了解为何会出现这种情况。

答案 4 :(得分:0)

$myarray = explode(" ", $_GET['keywords']);
var_dump($myArray);

怎么样?

答案 5 :(得分:0)

$url = 'example/myproject.php?keywords=this+is+an+example';
$x = parse_url($url);
$y  = str_replace("keywords=", "", $x["query"]);

var_dump(explode("+", $y));

首先解析网址,然后再移除关键字=,然后通过+符号展开剩下的内容。