0

我需要比较 php.ini 中的两个文本文件。一个文件是用户上传的,另一个由服务器提供,在 Windows 上运行。当文件从另一台 Windows 计算机提交时,这可以正常工作,但是从 linux 计算机上的文件不同,我假设这是因为不同的行尾。有没有一种简单的方法可以将 windows 文本文件与 linux 文本文件进行比较?

目前这是我的代码;

$text1 = file_get_contents($file1);
$text2 = file_get_contents($file2);
if (strcmp($content, $content2) == 0) { etc;
4

3 回答 3

6

您可以在两个文件CRLF中用行尾或其他方式替换行尾- 尝试这样的事情:LF

$text1 = str_replace("\r\n", "\n", $text1)

对于$text2.

于 2010-08-15T10:59:10.907 回答
1

只是为了添加另一个可能更便携的选项(其他回答者建议的替换已经适合您的情况),该file()函数将文件数据拆分为一个数组,并且似乎能够处理 Windows 和 Linux 编码:

$text1 = file($file1, FILE_IGNORE_NEW_LINES);
$text2 = file($file2, FILE_IGNORE_NEW_LINES);  

if ($text1 === $text2) .... 

auto_detect_line_endings如果打开运行时设置,它还可以处理 Macintosh 行尾。

于 2010-08-15T11:21:51.337 回答
0
preg_replace('/\v+/','\n',$text1)==preg_replace('/\v+/','\n',$text2)
于 2010-08-15T11:20:00.337 回答