【问题标题】:Calculate text diffs in PHP [duplicate]在 PHP 中计算文本差异 [重复]
【发布时间】:2008-09-21 23:25:20
【问题描述】:

PHP 中是否有任何库(第三方或内置)来计算文本差异?

【问题讨论】:

    标签: php diff


    【解决方案1】:

    什么样的差异?文件差异? array_diff() 作用于数组。然后还有xdiff,它“使您能够创建和应用包含不同版本文件之间差异的补丁文件”。后者作用于文件或字符串。

    编辑:我应该添加 xdiff 似乎还没有发布。您必须从源代码构建才能使用它。

    【讨论】:

    • 感谢您的回答-我现在已经澄清了一些问题。
    • “xdiff 似乎还没有发布在一个版本中”——bugger。
    【解决方案2】:

    这完全取决于你的意思和你想做什么,但是有

    PEAR Text_Diff - 执行和呈现文本差异的引擎

    【讨论】:

      【解决方案3】:

      有一个漂亮而小巧的 Simplediff project on Github 可以创建文本和 HTML 差异。

      【讨论】:

      • 我没有运行程序,但似乎是为了数组差异?
      • @nickf 是的,但是您可以轻松地将文本分解为数组。
      • 这太棒了。相信我。我用过。
      【解决方案4】:

      this 的输出是 GNU diff 格式。它可能是您正在寻找的。​​p>

      【讨论】:

        【解决方案5】:

        这真的取决于你想要什么结果。如果您只想获取两组文本的 diff 文件,您可能会发现只使用外部 diff 命令更简单(当然这完全取决于您正在开发的环境)。

        $diff = `diff $file1 $file2`;
        

        如果您想完全使用差异信息,则需要从那里进行解析,而此解决方案可能不是您所追求的。在这种情况下,我建议查看上面提到的 PEAR 库或搜索类似的文本解析库。

        【讨论】:

        • 当然,这意味着您必须非常小心地审查您的用户输入,以确保该命令正在处理正确的文件,并且无法查找错误的文件。
        • 在使用字符串连接创建shell命令时使用escapeshellarg
        【解决方案6】:

        MediaWiki 的差异引擎是开源的(就像它的其余部分一样)。如果您喜欢 Wikipedia 处理文本差异的方式,它可能是您的解决方案。

        【讨论】:

          【解决方案7】:

          我真的很喜欢这个基于 JavaScript 的 web 项目。

          jsdifflib

          【讨论】:

            【解决方案8】:

            不是内置的,但我喜欢它,因为它有一个很好的界面来测试网站上的所有内容,而且在高粒度级别上它似乎比 Text_Diff 快一些。

            http://www.raymondhill.net/finediff/viewdiff-ex.php

            【讨论】:

              猜你喜欢
              • 2013-07-10
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-07-18
              相关资源
              最近更新 更多