lolli42/finediff 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

lolli42/finediff

最新稳定版本:1.1.2

Composer 安装命令:

composer require lolli42/finediff

包简介

PHP implementation of a Fine granularity Diff engine

README 文档

README

Tests

FineDiff

FineDiff is a rather simple library to create HTML diff view of two strings:

echo (new Diff())->render('hello world', 'hello2 worlds');
hello<ins>2</ins> world<ins>s</ins>

Installation

$ composer req lolli42/finediff

Tags

  • 1.1 Dropped PHP <8.2
  • 1.0 Dropped PHP <7.2, has PHP >=7.2 support, added multibyte support, forces strict types, E_ALL error free
  • <1.x is identical to cogpowered/finediff from (https://github.com/cogpowered/FineDiff)

Usage

Render the difference between two strings as HTML on a character basis:

echo (new Diff())->render('string one', 'string two');
string <ins>tw</ins>o<del>ne</del>

Render the difference between two strings as HTML on a word basis:

echo (new Diff(new Word()))->render('string one', 'string two');
string <del>one</del><ins>two</ins>

Special characters and entities are quoted by HTML renderer and multibyte strings are handled:

echo (new Diff())->render('foo<bär>baz', 'foo<qüx>baz');
foo&lt;<del>b&auml;r</del><ins>q&uuml;x</ins>&gt;baz

Algorithm

To create a diff-view between two string, an intermediate "Opcode" representation is created that specifies the differences form string one to string two. The renderer then takes this opcode and creates HTML from it. Note the opcode string is considered internal and may change in a backwards breaking way with younger library releases.

$diff = new Diff();
echo $diff->getOpcodes('hello world', 'hello2 worlds');
// c5i:2c6i:s
// Means: copy 5 chars "hello", then insert "2", then copy 6 chars " world", then insert "s"
echo $diff->process('hello wordl', 'c5i:2c6i:s');
// hello<ins>2</ins> world<ins>s</ins>

Running tests

Full test run:

$ composer update
$ vendor/bin/phpunit

Restricting to single files:

$ composer update
$ vendor/bin/phpunit tests/DiffTest.php

Casual setup to run tests with xdebug (3.x) enabled, an IDE like phpstorm should then break point:

$ composer update
$ XDEBUG_MODE="debug,develop" XDEBUG_TRIGGER="foo" vendor/bin/phpunit

History

License

MIT License. See LICENSE file.

统计信息

  • 总下载量: 8.12M
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 13
  • 点击次数: 1
  • 依赖项目数: 3
  • 推荐数: 0

GitHub 信息

  • Stars: 13
  • Watchers: 2
  • Forks: 27
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-01-04