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

标签 php linux windows cmd

我需要将实际的 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 和 OS X 上有效——我没有 Win 系统可以尝试。

另请注意,可能是 echo 的 CMD.EXE 实现不喜欢换行符——其他程序可能会按照您的预期处理它,因此值得尝试 ffmpeg

(编辑:正如 Tom 所说,windows PowerShell 不存在 cmd.exe 存在的问题)

如果您所做的只是创建 t.txt 以用作 ffmpeg 的输入,您可以直接从 PHP 创建它。

关于php - 如何将 CRLF 作为参数传递给命令行程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26720517/

相关文章:

c++ - 如何找到那些占用我内存的VC++代码?

php - 需要一个智能搜索脚本 : Find . FTP 站点上小于 1 KB 的 php 文件

PHP为网页中的变量设置变量

php - Redis CLI 未通过 Laravel 显示最近存储的 key

linux - 如何备份 Fedora Linux 并在 VMWare 中恢复或加载镜像

linux - 在不停止永久服务的情况下切换永久日志

linux - su下如何运行sudo?

windows - 通过批量创建新文件而不覆盖旧文件

windows - 如何在 PowerShell 中输出一些东西

PHP/在表格行中保存数学公式