1)在php用户中输入:'%key%'
之类的查询或'%door%'
2)我将perl脚本称为
ob_start();
passthru("perl -w search.pl 'query');
3)在perl中如果我打印
print "query: $ARGV[0]\n";
4)打印为
像^m'%key%'^M
这样的查询或像^m'%door%'^M
以用户输入的值打印的任何建议。
答案 0 :(得分:0)
您错过了passthru
命令中的结束双引号。
我想你需要escapeshellarg(),即:
$query = escapeshellarg("'%key%'");
shell_exec("perl -w search.pl '$query' ");
escapeshellarg()
escapeshellarg()在字符串和引号/转义符周围添加单引号 任何现有的单引号,允许您将字符串直接传递给 shell函数并将其视为单个安全参数。 此函数应用于将单个参数转义为shell 来自用户输入的功能。 shell函数包括exec(), system()和反引号操作符。