我需要将实际的 CRLF 作为参数传递给程序。
如果我这样做:
shell_exec('echo "Hello World" >t.txt');
它工作正常。但是当我这样做时:
shell_exec('echo "Hello
World" >t.txt');
它坏了。我需要一种方法将实际的 CRLF 作为参数传递,因为 ffmpeg
在使用 -headers 时需要它。
我需要一个适用于 Windows/Linux 的解决方案。
最佳答案
尝试使用 PHP_EOL
而不是转义的换行符和/或回车符。
<?php
shell_exec('echo "Hello' . PHP_EOL . 'World" >t.txt');
?>
这对我在 Linux 和 OS X 上有效——我没有 Win 系统可以尝试。
另请注意,可能是 echo
的 CMD.EXE 实现不喜欢换行符——其他程序可能会按照您的预期处理它,因此值得尝试 ffmpeg
。
(编辑:正如 Tom 所说,windows PowerShell 不存在 cmd.exe 存在的问题)
如果您所做的只是创建 t.txt
以用作 ffmpeg 的输入,您可以直接从 PHP 创建它。
关于php - 如何将 CRLF 作为参数传递给命令行程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26720517/