这是我的问题:我希望将一些十六进制数据从 PHP 传递给外部应用程序:
exec('echo "'.$message.'" | /usr/bin/gateway');
$message 来自用户输入:
测试'”/'\'/”\””//
addslashes(), stripslashes() 不能解决我的问题。使用时:
$message = stripslashes($_POST['message']);
我可以看到控制台日志:
sh: 1: Syntax error: Unterminated quoted string
或空值
所以我开始思考,将输入转换为十六进制值并传递它们可能会有所帮助:
exec('echo -e '.$message.' | /usr/bin/gateway');
但是后来我在将十六进制数据传递给那个回声时遇到了麻烦。
所以我的问题是如何做到这一点?我需要将用户写入的完全相同的字符串传递给网关服务。- 将用户输入转换为十六进制形式,并将其放在 echo -e 中(如何?) - 或者以某种方式与引号和斜杠进行斗争