2010-08-28 69 views

回答

0

它有点超过顶部,但如果需要,您可以手动解析请求主体。

<?php 
    if(!empty($_POST) && $_SERVER['CONTENT_TYPE'] == 'application/x-www-form-urlencoded') { 
      $_post = array(); 
      $queryString = file_get_contents('php://input'); // read the request body 
      $queryString = explode('&', $queryString); // since the request body is a query string, split it on '&' 
                 // and you have key-value pairs, delimited by '=' 
      foreach($queryString as $param) { 
        $params = explode('=', $param); 
        if(array_key_exists(0, $params)) { 
          $params[0] = urldecode($params[0]); 
        } 
        if(array_key_exists(1, $params)) { 
          $params[1] = urldecode($params[1]); 
        } 
        else { 
          $params[1] = urldecode(''); 
        } 
        $_post[$params[0]] = $params[1]; 
      } 
      $_POST = $_post; 
    } 
?> 
0

我不该想。你究竟想要做什么?

例如,您可以使用变量(0)(1)或variable_0_1作为名称。

0

不要相信你能做到这一点。我也不明白你为什么需要。但是,这应该工作:

$_POST['variable'] = array(array('abc','def'),array('ddd','ggg')); 

print_r(flatPost('variable')); 

function flatPost($var) 
{ 
    return enforceString($_POST[$var], $var); 
} 

function enforceString($data, $preKey = '') 
{ 
    if(!is_array($data)) 
    { 
     return array($preKey . $data); 
    } 

    $newData = array(); 
    foreach($data as $key => &$value) 
    { 
     $element = enforceString($value, $preKey . '[' . $key . ']'); 
     $newData = array_merge($newData, $element); 
    } 
    return $newData; 
} 
2

没有,但没有阻止你获取查询字符串(通过$_SERVER['QUERY_STRING'])和手动解析它。例如:

$myGET = array(); 
foreach (explode("&", $_SERVER['QUERY_STRING']) as $v) { 
    if (preg_match('/^([^=])+(?:=(.*))?$/', $v, $matches)) { 
     $myGET[urldecode($matches[1])] = urldecode($matches[2]); 
    } 
}