我在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
的话就像那样..
答案 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));
首先解析网址,然后再移除关键字=,然后通过+符号展开剩下的内容。