如何将CRLF作为参数传递给命令行程序?

时间:2014-11-03 18:23:48

标签: php linux windows cmd

我需要将实际的CRLF作为参数传递给程序。

如果我这样做:

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

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

shell_exec('echo "Hello 
World" >t.txt');
它打破了。我需要一种方法来传递实际的CRLF作为参数,因为ffmpeg在使用-headers时需要它。

我需要一个适用于Windows / Linux的解决方案。

2 个答案:

答案 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创建它。