【问题标题】:How do you compare two text files with different line endings in PHP?如何在 PHP 中比较具有不同行尾的两个文本文件?
【发布时间】:2010-08-15 10:56:12
【问题描述】:

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

目前这是我的代码;

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

【问题讨论】:

    标签: php line-endings newline


    【解决方案1】:

    您可以在两个文件中将 CRLF 换行符替换为 LF 换行符或其他方式 - 尝试如下操作:

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

    $text2 也是如此。

    【讨论】:

      【解决方案2】:

      只是为了添加另一个可能更便携的选项(其他回答者建议的替换已经适合您的情况),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的行尾。

      【讨论】:

        【解决方案3】:
        preg_replace('/\v+/','\n',$text1)==preg_replace('/\v+/','\n',$text2)
        

        【讨论】:

          猜你喜欢
          • 2014-05-27
          • 2017-06-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-08-14
          • 1970-01-01
          • 2020-02-02
          相关资源
          最近更新 更多