3

我最近发现在行尾只有“CR”而不是“CRLF”或“LF”的代码行导致 PHP 行为怪异,即将 2 行视为一个,忽略 CR,或者更准确地说,将其解释为:回车而不是换行。

我以前从来没有遇到过这个问题,但是最近,我发现当我按“Enter”移动到新行时,notepad++ 有时只会放一个 CR……它会导致脚本表现不佳。

例如,当使用 LF 或 CRLF 启用行但仅使用 CR 崩溃时,此 Hello World 脚本可以正常工作(至少我在 peer1 和 hostgator 服务器上都复制了该问题——其他人有不同的体验吗?)...

<?php
Header( "HTTP/1.1 301 Moved Permanently" );
Header( "Location: http://www.cnn.com/" );
?>

我得到这个错误:

致命错误:在第 1 行的 /home/bernatch/public_html/test-redir-cr.php 中调用未定义函数 phpheader()

显然,PHP 将<?php代码和 Header 函数视为在同一行...

我的问题是:a) 有没有办法强制 PHP 将单个 CR 解释为真正不同的行

或者

b) 有没有办法强制记事本++ 在我按 Enter 时输入 CRLF 或 LF?

4

2 回答 2

1

Mac 使用 CR。Linux 使用 LF。Windows 使用 CR-LF,因此 Windows 操作系统在 CR 之后不插入 LF 会很奇怪。也许我在这里遗漏了一些东西。

在 Windows 上编辑 -> 在 Linux 上查看 = OK

在 Windows 上编辑 -> 在 Mac 上查看 = OK

所以我猜它可能是你的FTP客户端。确保将纯文本文件上传为 ASCII,而不是二进制文件。

于 2012-09-01T02:43:38.607 回答
0

在 Notepad++ 中,您应该能够将 EOL 转换为 Windows 格式,如SuperUser.com answer中所述。

于 2012-06-27T02:26:58.103 回答