我正在寻找一个免费的PHP库,可以生成与HTML相对应的代码。基本上就像GitHub的代码差异页面一样。
我一直在搜索,找不到任何东西。有人知道我在寻找什么吗?
在这里加上我的两分钱......
不幸的是,在 PHP 中没有用于显示/生成差异的真正好的差异库。也就是说,我最近确实找到了一种使用 PHP 执行此操作的迂回方法。解决方案涉及:
git使用 PHP 进行炮击以生成要呈现的 Diff首先,有一个优秀的JavaScript 库用于呈现 GitHub 风格的差异,称为diff2html。这使差异非常干净且具有现代风格。但是diff2html需要一个真正的git diff 来呈现,因为它旨在逐字呈现 git diffs——就像 GitHub 一样。
如果我们让 diff2html 处理 diff 的渲染,那么我们剩下要做的就是创建 git diff 来渲染它。
要在 PHP 中执行此操作,您可以git使用在服务器上运行的本地二进制文件。您可以使用git该--no-index选项计算两个任意文件的差异。您还可以指定在找到的差异之前/之后使用该-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);
Run Code Online (Sandbox Code Playgroud)
然后你需要$diff回到前端。您应该查看的文档进行diff2html,但最终的结果看起来在JavaScript这样的事情(假设你传递$diff的diffString):
function renderDiff(el, diffString) {
var diff2htmlUi = new Diff2HtmlUI({diff: diffString});
diff2htmlUi.draw(el);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4693 次 |
| 最近记录: |