PHP将'file_get_contents'分解为数组

时间:2013-04-09 11:10:30

标签: php ios objective-c json post

在我的ios应用程序代码中,我在HTTPBody中传递了一个NSDictionary 所以我的php可以检查用户是否存在于数据库中。

-(void)checkUser
    {
      NSDictionary *userDict = [NSDictionary dictionaryWithObjectsAndKeys:
      sessionId, @"sessionId",
      sessionName, @"sessionName",
      nil];

      NSData *jsonData = [NSJSONSerialization dataWithJSONObject:userDict
                        options:NSJSONWritingPrettyPrinted error:nil];
      NSString *jsonString = [[NSString alloc] initWithData:jsonData
      encoding:NSUTF8StringEncoding];

      // initialize and open the stream
      NSURL *url = [NSURL URLWithString:@"http://www.mysite.com/userValidate.php"];
      NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
      [request setHTTPMethod:@"POST"];
      [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
      [request setHTTPBody:[jsonString dataUsingEncoding:NSUTF8StringEncoding]];

      [NSURLConnection connectionWithRequest:request delegate:self];
    }

在PHP文件中使用

$raw = file_get_contents('php://input');

然后回来

post = "{\n \"sessionId\" : \"132156\",\n \"sessionName\" : \"My Name\"\n}";

我按照这篇文章https://stackoverflow.com/a/5078426/1333294将此方法添加到我的PHP文件

    function getTestPostData()
    {
     $post_data = explode( "\n", file_get_contents('php://input') );
     $result = array();

     foreach( $post_data as $post_datum ) {
         $pair = explode(":", $post_datum );
         $result[urldecode($pair[0])] = urldecode($pair[1]);
       }
     return $result;
    }

现在我正在

    explode = {
        " \"sessionId\" " = " \"132156\",";
        " \"sessionName\" " = " \"My Name\"";
        "{" = "";
        "}" = "";
    };

如何进一步'清理'阵列,以便我的arry就像

        "sessionId" = "132156";
        "sessionName" = "My Name";

由于

1 个答案:

答案 0 :(得分:0)

它看起来像一个json数组。尝试将字符串输入json_decode()

function getTestPostData()
{
    $post_data = file_get_contents('php://input');
    $result = json_decode( $post_data, true );
    return $result;
}

这可以进一步减少,但为了清楚起见,请使用原始变量。

编辑:添加第二个参数,以返回数组与对象