我正在寻找一个免费的php库,可以生成代码diff HTML。基本上就像GitHub的代码不同页面。
我找遍了,什么也找不到。有没有人知道有什么能做我要找的东西?
发布于 2013-03-09 05:34:36
在谷歌上用不同的措辞进行了更多的搜索后,我似乎找到了我想要的东西。
php-diff似乎做了我想做的事情。只需一个php函数,它接受两个字符串并生成所有的HTML,就可以在网页中显示差异。
发布于 2016-12-16 22:10:36
在这里补充我的两点意见。
不幸的是,在PHP中没有真正好的diff库来显示/生成差异。也就是说,我最近确实找到了一种使用PHP来实现这一点的曲折方法。涉及的解决方案包括:
git
,以生成用于呈现的Diff
首先,有一个名为diff2html的优秀JavaScript库,用于呈现GitHub风格的差异。这样呈现出来的差异非常清晰,而且具有现代风格。然而,diff2html
需要一个真正的git diff来呈现,因为它的目的是从字面上呈现git差异--就像GitHub。
如果我们让diff2html处理diff的渲染,那么我们剩下要做的就是创建git diff来渲染它。
要在PHP中做到这一点,您可以在服务器上运行本地git
二进制文件。您可以使用--no-index
选项使用git
计算两个任意文件的差异。还可以使用-U
选项指定在找到的差异之前/之后返回多少行。
在服务器上,它看起来像这样:
// File names to save data to diff in
$leftFile = '/tmp/fileA.txt';
$rightFile = '/tmp/fileB.txt';
file_put_contents($leftFile, $leftData);
file_put_contents($rightFile, $rightData);
// Generate git diff and save shell output
$diff = shell_exec("git diff -U1000 --no-index $leftFile $rightFile");
// Strip off first line of output
$diff = substr($diff, strpos($diff, "\n"));
// Delete the files we just created
unlink($leftFile);
unlink($rightFile);
然后,您需要将$diff
返回到前端。您应该查看diff2html
的文档,但在JavaScript中,最终结果将类似于以下内容(假设您将$diff
作为diffString
传递):
function renderDiff(el, diffString) {
var diff2htmlUi = new Diff2HtmlUI({diff: diffString});
diff2htmlUi.draw(el);
}
发布于 2013-03-09 05:28:31
我想你要找的是xdiff
。
xdiff扩展使您能够创建和应用包含不同文件修订版之间差异的补丁文件。
此扩展支持两种操作模式-字符串和文件,以及两种不同的补丁格式-统一和二进制。统一的补丁非常适合文本文件,因为它们是人类可读的,并且易于审查。对于像档案或图像这样的二进制文件,二进制补丁将是足够的选择,因为它们是二进制安全的,并且可以很好地处理不可打印的字符。
https://stackoverflow.com/questions/15303578
复制相似问题