我需要将一个实际的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