PHP中的print_r()和mail()输出不同的东西,为什么?

时间:2010-06-17 17:20:55

标签: php magic-quotes

我有一个html表单,访问者可以填写并向我发送一些信息,如电子邮件。它像这样发送:

$body = print_r($_POST, true);

mail ($to, $subject, $body, $headers);

当他们写 abc'def 时,我会 abc \'def

这个额外的\是什么?我怎么能阻止它?

3 个答案:

答案 0 :(得分:7)

因为魔法引用。请参阅here

他们没有输出不同的东西 - $_POST超全局已经有反斜杠。

答案 1 :(得分:2)

这是最有可能的,因为你打开了 magic quotes ,但是你可以这样做:

if (get_magic_quotes_gpc())
{
   $new_text = stripslashes($text);
}

现在$new_text应正常输出。

答案 2 :(得分:2)

反斜杠是一个转义字符 - 它让解析器知道你不想以PHP理解它们的正常方式使用单引号。如果要在输出中删除它们,请使用stripslashes方法。

string stripslashes ( string $str )