iphis/finediff

PHP 实现的精细粒度差分引擎

0.4.0 2017-06-09 16:40 UTC

This package is not auto-updated.

Last update: 2024-09-29 02:44:33 UTC


README

最初由 Raymond Hill (https://github.com/gorhill/PHP-FineDiff) 编写,并由 Rob Crowe (https://github.com/cogpowered/FineDiff) 调整以适应现代世界。FineDiff 已更新至 PHP 7 和 mb_string。

Build Status StyleCI

安装

Composer

使用 FineDiff 的首选方式是通过 Composer

将以下内容添加到您的 composer.json 文件中

{
    "require": {
        "iphis/finediff": "0.4.*"
    }
}

升级

0.3.x 引入了一个不兼容的版本,所以如果你已经存储了 opcodes,请不要升级!

0.3.x 修复了一个双重编码问题,生成的 opcode 比所需更长。

用法

渲染 HTML

渲染两个字符串之间的差异为 HTML

$diff = new iphis\FineDiff\Diff;
echo $diff->render('string one', 'string two');

这将输出

string <ins>tw</ins>o<del>ne</del>

您可以将粒度更改为 iphis\FineDiff\Granularity\Word 以获得以下输出

string <del>one</del><ins>two</ins>

您可以通过将其传递给 Diff 构造函数来实现这一点

$granularity = new iphis\FineDiff\Granularity\Word;
$diff        = new iphis\FineDiff\Diff($granularity);

抓取 opcodes 指令

Opcode 指令是告诉 FineDiff 如何将一个字符串转换为另一个字符串的。

$diff = new iphis\FineDiff\Diff;
echo $diff->getOpcodes('string one', 'string two');

这将输出

c7d3i3:two

使用 opcodes 渲染文本

$render = new iphis\FineDiff\Render\Text;
echo $render->process('string one', 'c7d3i3:two');

这将输出

string two

与 HTML 相同

$render = new iphis\FineDiff\Render\Html;
echo $render->process('string one', 'c7d3i3:two');

许可

版权 (c) 2011 Raymond Hill (http://raymondhill.net/blog/?p=441) 版权 (c) 2013 Rob Crowe (http://cogpowered.com) 版权 (c) 2017 Tobias Knipping (http://tk-schulsoftware.de)

在 The MIT License 下授权

特此授予任何人获取本软件及其相关文档文件(“软件”)副本的权利,免费使用软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,并允许获得软件副本的人进行此类操作,前提是遵守以下条件

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、针对特定目的的适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论这些责任是根据合同、侵权或其他法律产生,还是源于、源于或与软件或软件的使用或其他交易有关。