2010-08-15 49 views
0

我需要比較php中的兩個文本文件。一個文件是用戶上傳的,另一個是由服務器提供的,在Windows上運行。 這個工作正常時,從另一臺Windows電腦提交文件,但從Linux計算機的文件出來不同,我假設這是因爲不同的行結束。有沒有一種簡單的方法來比較Windows文本文件和Linux文本文件?如何比較兩個文本文件與PHP中的不同行尾?

目前這是我的代碼;

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

回答

6

你可以在這兩個文件替換LF行結束CRLF行尾或周圍的其他方法 - 嘗試這樣的事:

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

與同爲$text2

0
preg_replace('/\v+/','\n',$text1)==preg_replace('/\v+/','\n',$text2) 
1

只是爲了添加另一個,可能更便攜的選項(替換由其他應答者已經將罰款你的情況建議),則file()函數把文件數據到一個數組,似乎是能夠同時處理Windows和Linux編碼:

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

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

它還可以處理的Macintosh行結束,如果auto_detect_line_endings運行時設置被開啓。

相關問題