PHP将'file_get_contents'分解为数组

Posted

技术标签:

【中文标题】PHP将\'file_get_contents\'分解为数组【英文标题】:PHP break 'file_get_contents' into arrayPHP将'file_get_contents'分解为数组 【发布时间】:2013-04-09 11:10:29 【问题描述】:

在我的 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://***.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\"";
        "" = "";
        "" = "";
    ;

我怎样才能进一步“清理”数组,这样我的数组就会像

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

谢谢

【问题讨论】:

使用file()而不是explode("\n", file_get_contents())来消除一个爆炸 你应该json_decode那个字符串,如果它是有效的JSON。 【参考方案1】:

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

function getTestPostData()

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

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

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

【讨论】:

对不起,我是 php 新手,我需要像 json_decode($raw = file_get_contents('php://input')); ? 我的 mac 决定现在是粉碎的好时机...我会在几分钟内检查一下,谢谢 当我使用 json_decode() 方法时,PHP 根本不返回答案,但是当我不使用它时它会返回,这是否意味着我没有在我的目标 c 代码中正确编码 json?跨度> 忘了你可能需要一个数组,而不是一个对象。您需要发送一个 true 作为第二个参数。更新了代码

以上是关于PHP将'file_get_contents'分解为数组的主要内容,如果未能解决你的问题,请参考以下文章

PHP 将变量发送到 file_get_contents()

使用 file_get_contents 将 html 表解析为 php 数组

使用 file_get_contents 将本地 PHP 文件的 HTML 输出存储到字符串中

php fopen与file_get_contents的区别

PHP------------------------file_get_content获取不到页面信息

PHP文件系统