2010-08-15 1 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

당신은 두 파일에 주위 CRLF 라인 LF 라인 엔딩으로 결말 또는 다른 방법으로 대체 할 수 - 이런 식으로 뭔가를 시도 :

$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) .... 

auto_detect_line_endings 런타임 설정이 설정되어있는 경우 또한 매킨토시 라인 엔딩을 처리 할 수 ​​있습니다.

관련 문제