php打破了cr和lf不匹配

时间:2013-10-07 10:43:19

标签: php windows notepad++

当我上传一些PHP文件时,我遇到了一些奇怪的问题,其中一些php文件有cr + lf EOL字符,有些有CR,有些有LF。
我正在使用Win8,Filezilla,Notepad ++和PHPRunner进行一些模板化工作(全部存储在Dropbox同步文件夹中)。当我在处理手工制作的php文件时,我有时会使用PHPRunner来ftp文件,有时还会使用Filezilla。

当我在记事本++中打开文件时,似乎有时这些行结尾会自行更改,我需要转到记事本++ - >编辑 - EOL转换才能将它们更改回unix样式。

所以这通常不会打扰我(除了它们随机更改有点奇怪)但是在PHP中看来,如果你REQUIRE_ONCE一个具有不同行结尾的文件,它就会无声地失败并且无效。 所以我的问题是

1)这是PHP的预期行为,如果是这样,它有什么方法可以在同一个源文件中接受不同的EOL编码?

2)为什么我的EOL角色可能被改变的任何想法?它是Filezilla,记事本++或Dropbox或PHPRunner正在修修补补吗? (当我打开文件时,我从未看到它们的通知发生变化,只会在重新启动计算机时发生)

这有点像拼图,以为我会问其他人是否遇到过这个

1 个答案:

答案 0 :(得分:0)

任何数量的应用程序都喜欢改变行结尾;在许多情况下,它被认为是有用的行为。 Ftp程序(等)具有在跨系统传输时转换文本文件的选项。 FTP的“ascii”模式(通常是文本文件的默认模式)支持自动转换。如果你最终上传了一些带转换的文件而有些没有,那么你最终会得到一个不一致的集合。

Notepad ++也可能正在这样做;我不使用它所以我不能说。最糟糕的是程序将仅为您触摸的行插入其首选行结尾,从而为您留下行结尾不一致的文件。听起来你至少幸免于此。

简而言之:从Notepad ++开始,检查每个触摸文件的工具的设置。