我需要把一个实际的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和OSX上对我很有效-我没有一个Win系统来尝试它。
另外请注意,可能是cmd.exe实现的echo不喜欢换行符——其他程序可能会按您的预期处理它,因此值得尝试ffmpeg
(编辑:正如Tom所指出的,Windows Powershell没有CMD.exe那样的问题)
如果您所做的只是创建t.txt作为ffmpeg的输入,那么您可以直接从php创建它。

08-18 03:28
查看更多