print_r () и mail () в PHP выводят что-то другое, почему? - PullRequest
2 голосов
/ 17 июня 2010

У меня есть html-форма, где посетители могут заполнить и отправить мне некоторую информацию в виде электронного письма.Он посылает так:

$body = print_r($_POST, true);

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

Когда они пишут abc'def Я получаю abc \ 'def

Что это за дополнительные \?Как я могу предотвратить это?

Ответы [ 3 ]

7 голосов
/ 17 июня 2010

Из-за магических цитат. Смотрите здесь .

Они не выводят что-то другое - суперглобальный $_POST уже имеет обратную косую черту.

2 голосов
/ 17 июня 2010

Обратная косая черта является escape-символом - она ​​позволяет анализатору понять, что вы не хотите использовать одинарные кавычки обычным образом, который понимает их PHP.Если вы хотите удалить их в своем выводе, используйте метод stripslashes .

string stripslashes ( string $str )

2 голосов
/ 17 июня 2010

Это наиболее вероятно, потому что у вас есть магические кавычки , однако вы можете пойти примерно так:

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

Теперь $new_text должен выводить нормально.

...