首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows与Linux PHP PHP_EOL - php数据不同

Windows与Linux PHP PHP_EOL - php数据不同
EN

Stack Overflow用户
提问于 2021-03-11 01:38:16
回答 1查看 59关注 0票数 1

我将一个脚本从windows迁移到了rhel 8,并且在我的php脚本中有以下代码:

代码语言:javascript
复制
$Data = file_get_contents('https://example.com/api/data'); 
$Array = json_decode($Data, true);
$Output = '';
foreach ($Array as $key => $value) {
 if ($Output != ''){$Output .= PHP_EOL;}
 $Output .= $value["id"] . ":" . $value["status"];
}
file_put_contents($Response,$Output);

在windows中,它在数据中添加了一个漂亮的新行。在hrel中并非如此。

我做了一个简单的测试:

代码语言:javascript
复制
$Output = '1';
$Output .= PHP_EOL;
$Output .= '2';
$Output .= PHP_EOL;
$Output .= '3';
file_put_contents($Response,$Output);

如果我执行一个十六进制转储,我会得到以下结果:

代码语言:javascript
复制
sh-4.4$ hexdump -c active.resp
0000000   1  \n   2  \n   3
0000005

代码语言:javascript
复制
sh-4.4$ hexdump active.resp
0000000 0a31 0a32 0033
0000005

带有-c的十六进制转储看起来是正确的。

如果我使用vi创建相同的文件,则十六进制转储将显示额外的\n,十六进制为0a31 0a32 0a33

我在$output的末尾添加了一个额外的PHP_EOL,它可以正常工作,并且十六进制转储显示的内容与vi创建的文件中的十六进制转储完全相同。

我不知所措。在linux上执行file_put_contents之前,我需要添加一个换行符吗?

有没有人能解释一下这个和没有最后一个php_eol的六进制转储?

EN

回答 1

Stack Overflow用户

发布于 2021-03-11 04:14:11

我把这件事搞清楚了。这就是我非常确定发生的事情。在linux中,行以新行结束。我通过连接构建此数据,末尾没有换行符(或者更准确地说,是EOL)。这肯定不是windows的问题。我在结尾处添加了一个换行符,现在它可以很好地处理它。当jbase读取这样的文件时,它会将其作为原始数据读取,我认为是对还是错。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66570056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档