shell 命令,带有来自 php 的选项

shell command with options from php

我有这个代码:

$codif ="file --mime-encoding -b inputfile.txt";
$codif = shell_exec($codif);
$encode = "iconv --from-code=$codif --to-code=UTF-8 --output=tempfile.txt inputfile.txt";

我试过了

shell_exec($encode); //1
exec($encode); //2
system($encode); //3

我有这个只是为了看看生成的命令是什么:

echo $encode;

输出如下:

iconv --from-code=iso-8859-1 --to-code=UTF-8 --output=tempfile.txt inputfile.txt

问题是,使用三种执行命令的形式中的任何一种,我都会遇到下一个错误:

sh: 2: --to-code=UTF-8: not found

在 shell 处执行输出命令时效果很好。 我也尝试过将 --to-code=UTF-8 更改为 -t UTF-8,结果相同。 所以问题是,我做错了什么以及如何解决?谢谢!

尝试将您的 $encode 变量更改为:

iconv -f $codif -t UTF-8 --output=tempfile.txt inputfile.txt

输出如下内容:

iconv -f iso-8859-1 -t UTF-8 --output=tempfile.txt inputfile.txt

你在 $codif 变量的末尾换了一行,这把事情搞砸了。 这需要以某种方式去除。 例如,您可以试试这个:

$codif ="file --mime-encoding -b inputfile.txt|tr -d '\n'";
$codif = shell_exec($codif);

file 命令的管道输出到 tr -d "\n" 将删除新行。您当然也可以在 php 代码中删除它。