2013-07-12 112 views
0

正如您所知,PHP使用_替换了$_POST$_GET键中的点和空格。PHP解析POST数据

实施例:

<input name="foo bar" /> 

变得$_POST['foo_bar']发送到服务器,而不是$_POST['foo bar']后。

你能指点我一个脚本,即使深度为(name="fo.o[bar][12][]")的数组也可以正确处理这个脚本吗?替换。在发送带有字符的表单之前,由于帖子来自外部不可编辑的来源,因此不能使用该选项。

解决方案应处理原始数据。

+2

你为什么要经历所有的麻烦? – DevZer0

+0

只是不要使用空格和点...即使源是外部的,HTML也可以被操纵 –

回答

1

这不是您的问题的算法解决方案,但它会解决您的问题。

有一些库设计用于使处理请求数据更简单。其中之一是来自Symfony的Request类: http://api.symfony.com/2.0/Symfony/Component/HttpFoundation/Request.html

它包装ParameterBag,所以它是很容易得到的数据: http://api.symfony.com/2.3/Symfony/Component/HttpFoundation/ParameterBag.html

基本用法是:

use Symfony\Component\HttpFoundation\Request; 

$request = Request::createFromGlobals(); 
echo $request->get('parameter_name'); 

它可以处理多三维参数也是如此。

您可以阅读更多关于它: http://symfony.com/doc/current/components/http_foundation/introduction.html