如何将CRLF作为parameter passing给命令行程序?

我需要将一个实际的CRLF作为parameter passing给一个程序。

如果我做:

shell_exec('echo "Hello World" >t.txt'); 

它工作正常。 但是当我这样做:

 shell_exec('echo "Hello World" >t.txt'); 

它打破了。 我需要一种方法来传递实际的CRLF作为参数,因为在使用-headers时ffmpeg需要它。

我需要Windows / Linux的解决scheme。

尝试使用PHP_EOL而不是转义的换行符和/或回车。

 <?php shell_exec('echo "Hello' . PHP_EOL . 'World" >t.txt'); ?> 

这在Linux和OS X上适用于我 – 我没有一个Win系统来试用它。

另外请注意,它可能是CMD.EXE实现echo ,不喜欢换行符 – 其他程序可能会处理它,所以它是值得尝试的ffmpeg

编辑:如汤姆指出,Windows PowerShell没有cmd.exe的问题)

如果你正在做的是创建t.txt作为ffmpeg的输入 ,你可以直接从PHP创建它。

 shell_exec('echo "Hello \n World" >t.txt'); $ cat t.txt Hello World