> Highlight the difference between two strings in PHP
> JavaScript based diff utility
> How to do text DIFF using PHP?
> Calculate text diffs in PHP
看来好像这些问题第一次被问及了,而且我想知道现在是一个很好的工具 – 这样一个比较的日子?我已经看了(除了这些问题):
> https://github.com/nuxodin/diff_match_patch-php
> http://pear.php.net/package/Text_Diff
> https://github.com/paulgb/simplediff/blob/5bfe1d2a8f967c7901ace50f04ac2d9308ed3169/simplediff.php
> http://www.raymondhill.net/finediff/viewdiff-ex.php
但是,我所得到的所有的东西现在都没有了,或者似乎有点狡猾,因为它们没有被使用太多(甚至有些甚至暗示他们不是很好的表现),而是PEAR,我担心.我不喜欢为一个小模块安装PEAR,但它似乎像在自己的窗口中投掷一块砖,以便将其安装到这样一个小模块上,与PEAR相比,一般来说,不仅仅是模块已经被取代并置于不同的渠道(dunno为什么?).我会使用PEAR版本,如果它是我唯一的选择,但我想使用最新的软件包.
有没有人知道一个很好的使用,目前维护或内置功能(即使它是PHP扩展)PHP和/或JavaScript(JQuery)的文本差异?
我其实决定去看看别的人在使用什么,偶然发现Yii(http://www.yiiframework.com)使用什么.
他们实际上使用PEAR模块作为其text_diff,并且在部门通道上使用它的新形式.看来,text_diff现在是一个部落项目,但您可以轻松地将其版本集成到您的应用程序中,这就是Yii默认情况下(它与其版本预捆绑在一起).
所以我搜索了一下,了解他们如何使用它,以及如何进入它,我遇到了:
public function actionDiff() { Yii::import('gii.components.TextDiff'); $model=$this->prepare(); if(isset($_GET['id']) && isset($model->files[$_GET['id']])) { $file=$model->files[$_GET['id']]; if(!in_array($file->type,array('PHP','txt','js','css'))) $diff=false; elseif($file->operation===CCodeFile::OP_OVERWRITE) $diff=TextDiff::compare(file_get_contents($file->path),$file->content); else $diff=''; $this->renderPartial('/common/diff',array( 'file'=>$file,'diff'=>$diff,)); } else throw new CHttpException(404,'Unable to find the code you requested.'); }
在CCodeGenerator为他们的Gii模块(http://www.yiiframework.com/doc/api/1.1/CCodeGenerator/).重要的部分是它们实际挂接在PEAR模块中的位置:
$diff=TextDiff::compare(file_get_contents($file->path),$file->content);
原来我不想使用PEAR因为膨胀,但是这个模块对于全功能的text_diff来说相当纤薄,所以我决定用这个.不仅如此,在这一刻,它是唯一一个真正为我工作的text_diff模块,所以我保持最好的,即使最好的是相当的记忆饥饿.