PHP 中的 print_r() 和 mail() 输出不同的内容,为什么?
我有一个 html 表单,访问者可以在其中填写一些信息并将其以电子邮件的形式发送给我。它像这样发送:
$body = print_r($_POST, true);
mail ($to, $subject, $body, $headers);
当他们写 abc'def 时,我得到 abc\'def
这个额外的 \
是什么?我怎样才能预防它?
I have a html form where visitors can fill and send me some information, as an e-mail. It sends like this:
$body = print_r($_POST, true);
mail ($to, $subject, $body, $headers);
When they write abc'def I get abc\'def
What is this additional \
? How I can prevent it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
因为神奇的引号。请参阅此处。
它们不会输出不同的内容 -
$_POST
超全局已经有了反斜杠。Because of magic quotes. See here.
They don't output something different – the
$_POST
superglobal already has the backslash.这是最有可能的,因为您打开了魔法引号,但是您可以,像这样进行:
现在
$new_text
应该正常输出。That's most possible because you have magic quotes turned on, you can however, go about like this:
Now
$new_text
should output normally.反斜杠是一个转义字符 - 它让解析器知道您不想以 PHP 理解的正常方式使用单引号。如果您想在输出中删除它们,请使用 stripslashes 方法。
字符串 stripslashes ( string $str )
The backslash is an escape character - it lets the parser know that you don't want to use the single-quote in the normal way that PHP understands them. If you want to remove them in your output, use the stripslashes method.
string stripslashes ( string $str )