0

我有一个由 Php 函数调用的 Perl 脚本。

在通话期间,我需要将标题、主题、正文作为参数传递。

但我们知道 Body 可以包含“新行”字符,例如:

Hello Mr x,

this is just a test

通常我们在这里有两条新线。

因此,当我使用 system() 函数调用脚本时:

system("perl /var/www/cgi-bin/daemon.pl $Header $Subject $body", $Res);

正文内容将只有

Hello Mr x,

我正在寻找的结果是有可能将新行传递给 perl 并完全按照所写的方式接收消息。

4

1 回答 1

0

谢谢您的帮助,

在我的解决方案中,我在我的 Php 文件中使用了 escapeshellarg(),在 perl 端我发现了HTML::Entities

有了这个我可以编码和解码我的协议:

这是我的代码:

php文件:

$Header = escapeshellarg($Header);
$Subject = escapeshellarg($Subject);
$Body = escapeshellarg($Body);

system("perl /var/www/cgi-bin/daemon.pl $Header $Subject $Body", $Res);

Perl 脚本:

#!/user/bin/suidperl -U
use HTML::Entities;

# The $Header , $Subject and $Body args are well received
# to pass this args to an other perl script i use encode_entities() function

encode_entities($Header);
encode_entities($Subject);
encode_entities($Body);

可以说HTML::Entities和 PHP中的escapeshellarg.php是一样的

于 2012-12-20T09:35:17.180 回答