PHP/JS文本差异

Sam*_*aye 10 javascript php jquery

首先,这是这四个问题的完全重复:

似乎时间已经改变,因为这些问题是第一次被问到的,我想知道什么是现在这种比较的好工具?我看过(除了这些问题):

但是我得到的所有这些都是现在没有用的,或者看起来有点狡猾,因为它们没有被那么多使用(有些甚至暗示它们不是很有效)并且PEAR让我担心.我讨厌为一个小模块安装PEAR,不仅如此,但是看起来像是通过我自己的窗口扔砖来安装它用于这样一个小模块,与PEAR相比,不仅如此,模块已被取代并放置在不同的频道(不知道为什么?).我会使用PEAR版本,如果它是我唯一的选择,但我想使用最新的软件包.

有没有人知道PHP和/或JavaScript(JQuery)中使用良好且当前维护或内置函数(即使它是PHP扩展)的文本差异?

Sam*_*aye 2

好吧,已经有一段时间了。

实际上,我决定看看其他人使用的是什么,并偶然发现了 Yii ( http://www.yiiframework.com ) 使用的是什么。

他们实际上使用 PEAR 模块text_diff,并在 horde 频道上以新形式使用它。看起来text_diff现在是一个 horde 项目,但是您可以轻松地将它的一个版本集成到您的应用程序中,这就是 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.');
}
Run Code Online (Sandbox Code Playgroud)

用于CCodeGenerator他们的 Gii 模块(http://www.yiiframework.com/doc/api/1.1/CCodeGenerator/)。重要的部分是它们实际挂接到 PEAR 模块的位置:

$diff=TextDiff::compare(file_get_contents($file->path), $file->content);
Run Code Online (Sandbox Code Playgroud)

通过读入两个文件的内容来产生输出diffed

最初我不想使用 PEAR,因为它太臃肿了,但是对于功能齐全的模块来说,这个模块相当薄,text_diff所以我决定使用它。不仅如此,目前它是唯一text_diff真正对我有用的模块,所以我一直在使用最好的模块,即使最好的模块非常消耗内存。