Слейте две строки, замените дублирующее содержимое [duplicate]

Ваш Javascript будет выполняться на клиенте, а не на сервере. Это означает, что foo не оценивается на стороне сервера, и поэтому его значение не может быть записано в файл на сервере.

Лучший способ подумать об этом процессе - это как будто вы генерируя текстовый файл динамически. Текст, который вы генерируете, становится исполняемым кодом после того, как браузер интерпретирует его. Только то, что вы размещаете между тегами <?php, оценивается на сервере.

Кстати, создание привычки встраивать случайные фрагменты PHP-логики в HTML или Javascript может привести к серьезному запутанному коду. Я говорю от болезненного опыта.

101
задан aku 26 September 2008 в 10:36
поделиться

4 ответа

Вы можете захватить COM-компонент, который использует Diff / Patch / Match от Google . Он работает от .NET.

Обновление, 2010 г. 17 октября. Код Google Diff / Patch / Merge был перенесен на C #. Компонент COM по-прежнему работает, но если вы используете .NET, вы хотите напрямую использовать порт .NET.

77
ответ дан Community 22 August 2018 в 12:46
поделиться
  • 1
    Похоже, это было перенесено на C # (полная управляемая реализация C #). Версия C # доступна в разделе загрузки на странице Google. Вы можете отредактировать «COM». бит вашего ответа. Приятно найти, что эта реализация (по крайней мере, версии python / js) используется в некоторых широко используемых проектах, таких как Google Docs. – Brian Low 5 October 2010 в 17:21
  • 2
    Брайан, спасибо. Я обновил ответ. – Cheeso 18 October 2010 в 23:09
  • 3
    Очень полезный ответ в 2015 году. Пожалуйста, не удаляйте, сайт был бы более полезен, если бы этот тип вещей позволял (читайте: другой сайт позволит это и многое другое, и поднимитесь и включите SO в обмен экспертами, если полезные вопросы, подобные этому продолжайте закрываться по причинам, основанным на ошибочной гипотезе в SO faq). – FastAl 11 April 2015 в 20:29
  • 4
    Согласитесь, что версия google хорошо работает и проста в использовании. – Johan Danforth 15 June 2017 в 12:29
  • 5
    Более C # -центральный порт (именование, обсадка и т. Д.) Находится по адресу: github.com/pocketberserker/Diff.Match.Patch с поддержкой nuget: Install-Package Diff.Match.Patch – Kirk Woll 22 June 2018 в 04:56

GitSharp включает в себя механизм diff на основе meyers diff. Взгляните на демоверсию, которая реализует простой wpf diff viewer, основанный на коллекции Diff.Sections: http://www.eqqon.com/index.php/GitSharp#GitSharp.Demo

5
ответ дан henon 22 August 2018 в 12:46
поделиться

Я думаю, что «Generic - Reusable Diff Algorithm в C #» на Codeproject - это лучшее, что вы можете найти в качестве .NET-Engine для diff / patch / merge. Я сделал проект самостоятельно, и он соответствует моим потребностям с большинством сценариев. Есть один или два сценария худшего случая, когда алгоритм делал патч-файл больше, чем он должен быть. Но в большинстве случаев он отлично подходит для меня (текстовые файлы размером> 30 МБ).

В настоящее время я тестирую другой проект Codeproject-Project, который вы можете найти здесь: http: / /www.codeproject.com/KB/applications/patch.aspx Он использует некоторые библиотеки DLL от Microsoft для исправления, поэтому выглядит интересно. Но эти DLL неуправляемы, и этот проект является лишь своего рода оболочкой для него. Но, возможно, это может помочь вам

Изменить: просто нашел другой проект, DiffPlex: http://diffplex.codeplex.com/ Это комбинация .NET Diffing Библиотека с браузером Silverlight и HTML diff . Как указано там , DiffPlex - это библиотека, которую использует CodePlex для генерации различий файлов.

20
ответ дан nulltoken 22 August 2018 в 12:46
поделиться
  • 1
    Спасибо за информацию! но я надеюсь найти более сложное решение. Я просто не могу поверить, что никто не создал какой-то аккуратный lib – aku 26 September 2008 в 10:35
  • 2
    Когда вы найдете лучшую библиотеку, пожалуйста, сообщите нам (или, по крайней мере, мне g ). Я довольно долго искал себя и ничего не нашел рядом с уже упомянутым. – Anheledir 28 September 2008 в 01:14
  • 3
    Diffplex переместился в github.com/mmanela/diffplex – codingdave 14 June 2017 в 09:35

Ни один из ответов до сих пор (кроме, возможно, ссылки GitSharp) не связан с трехсторонним слиянием, поэтому в случае, если он помогает кому-то, я недавно портировал реализацию javascript diff3 Тони Гарнок-Джонса (из синхронизма , основанный на Hunt и McIlroy 1976) на C #.

Это упрощенный однопользовательский порт методов сравнения и трехстороннего слияния, но это стандартный алгоритм и до сих пор работает для меня очень хорошо: https://gist.github.com/2633407

4
ответ дан Tao 22 August 2018 в 12:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: