icap/html-diff

该软件包最新版本(v1.1.0)没有可用的许可信息。

一个用于比较HTML文件的PHP5库。

v1.1.0 2016-02-17 16:35 UTC

This package is not auto-updated.

Last update: 2024-09-23 16:07:57 UTC


README

一个用于比较HTML文件的PHP5库。

实际上,这个库是PHP的daisy-diff库的移植,可以在此处找到gitgub,符合PSR-4标准。该库于2008年开发,今天被许多维基平台(维基百科、维基枢纽、游戏维基等)使用。它是MediaWiki软件包的一部分。

设置

要求

  • PHP >=5.3.0
  • Pimple 1.0.*
  • Silex 1.0.*

安装

安装HtmlDiff最简单的方法是使用以下要求的Composer

    {
        "require": {
        	...
            "icap/html-diff": ">=1.0.1"
        }
    }

或者,您可以下载存档并将src/文件夹添加到PHP的include路径

    set_include_path('/path/to/src' . PATH_SEPARATOR . get_include_path());

用法

要找到并渲染两个HTML块之间的差异,您需要包含HtmlDiff

	use Icap\HtmlDiff\HtmlDiff;

然后使用以下属性初始化一个新的HtmlDiff类对象

  • 旧的HTML文本/块(String)
  • 新的HTML文本/块(String)
  • 是否启用或禁用格式更改的选项(Boolean)(如果除了添加和删除之外,您还想显示节点/元素的不同样式修改,请将此设置为true)

然后调用类中的outputDiff函数以检索具有比较版本和修改的结果。

	$htmlDiff = new HtmlDiff($oldText, $newText, true);
	$out = $htmlDiff->outputDiff();
	//Then
	$out->toString();//to get the compared version
	//And
	$out->getModifications();//to retrieve the number of differences/modifications between the two blocks.

输出是一个ChangeText

您始终可以参考演示/示例以获取更多帮助。在提供的示例中,我们使用两种不同的样式来渲染比较后的HTML结果。您可以根据需要在您的应用程序中复制和使用这些样式。

与原始库相比的修改

  • 在ChangeText对象中添加了一个新属性(修改),用于计算两个文本之间找到的差异。这些差异以数组的形式给出('added' => #, 'changed' => #, 'removed' => #)
  • 删除了详细信息提示
  • 替换了HtmlDiff模块使用的所有MediaWiki通用函数(定义在此处)为一些简单的/虚拟的函数,以便模块可以正常运行。
  • 为了符合WAI标准,在转换后的HTML输出中,将所有'added'和'deleted' span标签分别替换为'ins'和'del'标签。

测试

由于该库是已测试的(希望如此)库的移植,因此没有创建或执行测试。

已知问题

有一个关于表格比较的已知问题,可以在此处报告。尽管它引用的是库的Java版本,但相同的问题也存在于PHP版本。