找不到幽灵马车return/line 提要

Cannot find the ghost carriage return/line feed

我有一个 .php file_get_contents 一个 openssl_pkcs7 签名和正则表达式的文件,trimmed 在回显它供用户下载之前。

但是,下载的文件在文件的 top/start 处有一行 break/new line/carriage return,这破坏了我的后续代码。当我在记事本++/记事本中打开它时,签名和正则表达式 template.mobileconfig 在文件开头没有这个空行,但是当通过浏览器下载时它就在那里。我对它插入的位置感到困惑,甚至在 trim 插入它之后,它仍然存在。

代码:

header("Content-type: text/plain");
header("Content-Disposition: attachment; filename=signed.mobileconfig");
$content = file_get_contents('./template.mobileconfig'); 
$trimmed = trim($content, " \t\n\r[=11=]\x0B");
echo $trimmed;

下载的文件在 notepad/notepad++ 中如下所示:

第 1 行始终为空。我试过 readfile() 和 trim() 来尝试解决它但无济于事。

在线十六进制编辑器的输出:

x0A 显然是一个换行符,但它来自哪里?为什么 trim() 没有摆脱它?

我想到的是尝试将 x0A 添加到您的 trim。

$trimmed = trim($content, " \t\n\r[=10=]\x0B\x0A");

您的 include() 可能有一个换行符 \n:

<?php
//code
?>     <======== \n right there (not visible)

找到所有包含的 PHP 文件并删除开始标记前的空格:

_
<?php 

并去掉结束标签(不需要):

?>