我有这段代码可以使用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
文件的数据?
答案 0 :(得分:1)
问题在于,当您使用PHP_EOL
时,您正在使用特定平台的换行符。这可能与文件编码不同。
在spec of JSONL ...
- 行分隔符为'\ n'
因此,如果您的平台使用\r\n
作为行尾(PHP_EOL
),则不会拆分行。
解决方案是始终将\n
用于JSONL文件...
explode("\n", $result['Body']->getContents());