acedude / finediff
PHP实现细粒度Diff引擎
Requires
- php: >=5.3.0
Requires (Dev)
README
最初由Raymond Hill编写(https://github.com/gorhill/PHP-FineDiff),FineDiff已进行调整,以使其适应现代世界。这意味着有文档、格式良好、易于扩展的测试代码。
安装
Composer
使用FineDiff的首选方式是通过Composer。
将以下内容添加到您的composer.json文件中
{ "require": { "cogpowered/finediff": "0.3.*" } }
升级
0.3.x引入了一个不兼容的版本,因此如果您已存储操作码,请不要升级!
0.3.x
修复了双重编码问题,生成的操作码比所需的更长。
用法
渲染HTML
渲染两个字符串之间的差异为HTML
$diff = new cogpowered\FineDiff\Diff; echo $diff->render('string one', 'string two');
这将输出
string <ins>tw</ins>o<del>ne</del>
您可以将粒度更改为cogpowered\FineDiff\Granularity\Word
,以便输出为
string <del>one</del><ins>two</ins>
您可以通过将其传递给Diff构造函数来实现这一点
$granularity = new cogpowered\FineDiff\Granularity\Word; $diff = new cogpowered\FineDiff\Diff($granularity);
获取操作码指令
操作码指令是告诉FineDiff如何将一个字符串转换为另一个字符串的内容。
$diff = new cogpowered\FineDiff\Diff; echo $diff->getOpcodes('string one', 'string two');
这将输出
c7d3i3:two
使用操作码渲染文本
$render = new cogpowered\FineDiff\Render\Text; echo $render->process('string one', 'c7d3i3:two');
将输出
string two
与HTML相同
$render = new cogpowered\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)
许可协议为MIT许可协议
特此授予任何获得此软件及其相关文档副本(以下简称“软件”)的人免费使用软件的权利,不受任何限制,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许向获得软件的人提供软件以供其使用,但须遵守以下条件
上述版权声明和本许可协议应包含在软件的所有副本或主要部分中。
软件按“现状”提供,不提供任何明示或暗示的保证,包括但不限于适销性、针对特定目的的适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论这些责任是因合同、侵权或其他行为引起的,无论是在软件或其使用过程中产生的,还是与此相关的。