如何将特殊字符传递给perl脚本?

时间:2016-04-27 22:40:28

标签: php regex perl

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

这样的查询

以用户输入的值打印的任何建议。

1 个答案:

答案 0 :(得分:0)

您错过了passthru命令中的结束双引号
我想你需要escapeshellarg(),即:

$query = escapeshellarg("'%key%'");
shell_exec("perl -w search.pl '$query' ");
escapeshellarg()
  

escapeshellarg()在字符串和引号/转义符周围添加单引号   任何现有的单引号,允许您将字符串直接传递给   shell函数并将其视为单个安全参数。   此函数应用于将单个参数转义为shell   来自用户输入的功能。 shell函数包括exec(),   system()和反引号操作符。