我必须比较 2 个 xml 文件并使用 php 和 Linux 的 diff 命令生成补丁。这是我的代码:
<?php
// script file location: /var/local/out/upload.php
// ...
// $templateName file location: /var/local/out/upload/example_word_template/word/document.xml
// $filename file location: /var/local/out/upload/example_word/word/document.xml
// $templateName value: upload/example_word_template/word/document.xml
// $filename value: upload/example_word/word/document.xml
$command = "diff /var/local/out/$templateName /var/local/out/$filename > /var/local/out/patch.patch";
exec($command);
echo($command);
?>
浏览器输出:
diff/var/local/out/upload/example_word_template/word/document.xml/var/local/out/upload/example_word/word/document.xml >/var/local/out/patch.patch
如果我复制并粘贴输出并直接在 Linux 中执行,它运行得很好。但是脚本本身不会生成补丁文件。有什么问题吗?
最佳答案
PHP 有一个 PECL extension for xdiff您可能想试试。
xdiff_file_diff
手册中的示例
$old_version = 'my_script.php';
$new_version = 'my_new_script.php';
xdiff_file_diff($old_version, $new_version, 'my_script.diff', 2);
注意区别只是句法层面的,语义上没有区别
<element foo="foo" bar="bar"/>
和
<element
foo="foo"
bar="bar"/>
关于php - 使用 php 的 exec 函数在 Linux 中使用 diff,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4449282/