ssddanbrown/htmldiff

HTML 内容差异生成器

维护者

详细信息

codeberg.org/danb/HtmlDiff

主页

资助包维护!
Kofi
ssddanbrown

安装量: 332,449

依赖项: 2

建议者: 0

安全: 0

v1.0.3 2024-03-29 16:51 UTC

This package is auto-updated.

Last update: 2024-09-19 13:55:57 UTC


README

Build Status Latest Stable Version Total Downloads

此库将比较两个提供的HTML字符串输入,并输出标记有两者之间差异的HTML。

这是从此处找到的c#实现移植到PHP的版本,该实现是此处找到的ruby实现的移植。主要归功于@Rohland@myobie的原始工作,我将它们简单地翻译成了PHP。

安装

您可以通过composer安装此包

composer require ssddanbrown/htmldiff

用法

此库提供了一个直接的静态函数,用于快速创建HTML差异

$diff = Ssddanbrown\HtmlDiff\Diff::excecute('<p>Hello there!</p>', '<p>Hi there!</p>');
// $diff = '<p><del class="diffmod">Hello</del><ins class="diffmod">Hi</ins> there!</p>';

或者,您也可以首先创建一个Diff类的实例来配置一些选项

use Ssddanbrown\HtmlDiff\Diff;

$diff = new Diff('<p>Hello there!</p>', '<p>Hi there!</p>');
$diff->repeatingWordsAccuracy = 1;
$diff->ignoreWhitespaceDifferences = false;
$diff->orphanMatchThreshold = 0.2;

$output = $diff->build();

选项

$diff->repeatingWordsAccuracy

数字,默认值为1。有效值从0到1。

定义如何比较重复的单词。此值允许排除一些单词进行比较,从而减少差异算法的总时间。0表示排除所有单词,因此差异将找不到任何匹配的单词。1(默认值)表示所有单词都参与比较,这是最精确的情况。0.5表示任何出现频率超过50%的单词可能被排除在比较之外。这并不意味着这些单词肯定会排除,但只允许在必要时排除它们。

$diff->ignoreWhitespaceDifferences

布尔值。默认值为true

如果设置为true,所有空白字符(包括&nbsp;)都被视为相等。

$diff->orphanMatchThreshold

数字,默认值为0。有效值从0到1。

如果某些匹配项太小并且离其邻居较远,则被认为是孤立的,并将其删除。此属性定义要考虑为孤立的匹配项的相对大小,范围从0到1。1表示所有匹配项都将被认为是孤立的。0(默认值)表示没有匹配项将被认为是孤立的。0.2表示如果匹配项长度小于其邻居之间距离的20%,则被认为是孤立的。

$diff->addBlockExpression($expression)

添加一个正则表达式,该表达式将用于将文本“分组”在一起,以便将其视为单个块。

传递给方法的$expression必须是有效的PHP正则表达式模式字符串。

开发

此包构建得非常接近于从c#库移植过来的代码和结构。它将保持与原始发布版本紧密一致,但将来可能会出现偏差。

Psalm被包含用于静态分析。可以像这样运行

./vendor/bin/psalm

PHPUnit用于测试。可以像这样运行

./vendor/bin/phpunit

许可证

此项目,以及从该项目移植出的库,均采用MIT许可证。有关更多信息,请参阅许可证文件