我需要将实际的CRLF作为参数传递给程序。
如果我这样做:
shell_exec('echo "Hello World" >t.txt');
它工作正常。但是当我这样做时:
shell_exec('echo "Hello
World" >t.txt');
它打破了。我需要一种方法来传递实际的CRLF作为参数,因为ffmpeg
在使用-headers时需要它。
我需要一个适用于Windows / Linux的解决方案。
答案 0 :(得分:2)
shell_exec('echo "Hello \n World" >t.txt');
$ cat t.txt
Hello
World
答案 1 :(得分:2)
尝试使用PHP_EOL
代替转义换行和/或回车。
<?php
shell_exec('echo "Hello' . PHP_EOL . 'World" >t.txt');
?>
这在Linux和OS X上对我有用 - 我没有Win系统可以试用它。
另请注意,可能是echo
的CMD.EXE实现不喜欢换行符 - 其他程序可能按预期处理它,所以值得尝试{ {1}}。
(编辑:,如Tom所说,Windows PowerShell没有cmd.exe的问题)
如果你所做的只是创建ffmpeg
以用作输入到ffmpeg,你可以直接从PHP创建它。