在exec()中打印反斜杠

4
我已经想出如何使用echo命令将\打印到页面上。
echo '\\';

当在exec()函数内使用时,这会失败。我正在尝试向命令行发出此命令以运行csvkit:

csvclean -q \" -e ascii  -z 10000000000000 file.csv

很不幸,我必须加上"来指定我的变量。我相信目前为止,"已被正确转义,但是似乎没有什么可以帮助我打印出\

这是我尝试的:

exec("csvclean -q \" -e ascii  -z 10000000000000" . " " . $csvfilename );

你尝试过使用 csvclean -q \\\" -e ascii -z 10000000000000 file.csv 吗?另外,你能展示一下你是如何实际调用 exec 的吗? - Jon
我正在使用以下代码: exec("csvclean -q \" -e ascii -z 10000000000000" . " " . $csvfilename ); - photocode
1
如果您需要直接使用 \",请将引号更改为撇号。例如:exec('csvclean -q \" -e ascii -z 10000000000000 ' . $csvfilename ); - Jon
谢谢!你提供的两种解决方案都可以在exec()函数中使用。请将其添加为答案,以便我可以正式采纳 :) - photocode
不用客气,已经完成了。很高兴能够帮到你。^^ - Jon
2个回答

6

使用 addslashes 函数:

echo addslashes('csvclean -q " -e ascii  -z 10000000000000 file.csv');

输出:

csvclean -q \" -e ascii -z 10000000000000 file.csv

编辑:

执行命令,请按照以下步骤进行:

exec('csvclean -q \" -e ascii -z 10000000000000 ' . $csvfilename );

这会在屏幕上打印,我需要它来启动命令行程序。 - photocode

0

根据您的要求,以下是答案。^^

由于您需要在exec中同时使用两个\",您可以采取以下两种方法之一:

exec("csvclean -q \\\" -e ascii  -z 10000000000000 " . $csvfilename );

或者更简单的方法是使用撇号将所有内容都变成字面量,而不需要进行转义。
exec('csvclean -q \" -e ascii -z 10000000000000 ' . $csvfilename );

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接