Ваш Javascript будет выполняться на клиенте, а не на сервере. Это означает, что foo
не оценивается на стороне сервера, и поэтому его значение не может быть записано в файл на сервере.
Лучший способ подумать об этом процессе - это как будто вы генерируя текстовый файл динамически. Текст, который вы генерируете, становится исполняемым кодом после того, как браузер интерпретирует его. Только то, что вы размещаете между тегами <?php
, оценивается на сервере.
Кстати, создание привычки встраивать случайные фрагменты PHP-логики в HTML или Javascript может привести к серьезному запутанному коду. Я говорю от болезненного опыта.
Вы можете захватить COM-компонент, который использует Diff / Patch / Match от Google . Он работает от .NET.
Обновление, 2010 г. 17 октября. Код Google Diff / Patch / Merge был перенесен на C #. Компонент COM по-прежнему работает, но если вы используете .NET, вы хотите напрямую использовать порт .NET.
GitSharp включает в себя механизм diff на основе meyers diff. Взгляните на демоверсию, которая реализует простой wpf diff viewer, основанный на коллекции Diff.Sections: http://www.eqqon.com/index.php/GitSharp#GitSharp.Demo
Я думаю, что «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 для генерации различий файлов.
Ни один из ответов до сих пор (кроме, возможно, ссылки GitSharp) не связан с трехсторонним слиянием, поэтому в случае, если он помогает кому-то, я недавно портировал реализацию javascript diff3 Тони Гарнок-Джонса (из синхронизма , основанный на Hunt и McIlroy 1976) на C #.
Это упрощенный однопользовательский порт методов сравнения и трехстороннего слияния, но это стандартный алгоритм и до сих пор работает для меня очень хорошо: https://gist.github.com/2633407
Install-Package Diff.Match.Patch
– Kirk Woll 22 June 2018 в 04:56