使用PHP

时间:2019-11-19 06:56:10

标签: php laravel

我有这段代码可以使用aws/aws-sdk-php-laravel包从AWS S3获取文件。

try {
    $s3Client = AWS::createClient('s3');
    $result = $s3Client->getObject([
        'Bucket'    => static::$s3Bucket,
        'Key'       => $fileName
    ]);

    return $result['Body']->getContents();
} catch (S3Exception $e) {
    return;
}

它工作正常,但是当我尝试使用explode(PHP_EOL, $result['Body']->getContents());时,它仅显示1个数组,并且在该数组内将有jsonl文件的结果,因此如何提取{{1 }}来自json文件的数据?

1 个答案:

答案 0 :(得分:1)

问题在于,当您使用PHP_EOL时,您正在使用特定平台的换行符。这可能与文件编码不同。

spec of JSONL ...

  
      
  1. 行分隔符为'\ n'
  2.   

因此,如果您的平台使用\r\n作为行尾(PHP_EOL),则不会拆分行。

解决方案是始终将\n用于JSONL文件...

explode("\n", $result['Body']->getContents());