Подтвердить что ты не робот

Обратный mysql_real_escape_string

У меня есть большой объем данных и, вероятно, будет содержать цитаты и двойные кавычки.

Я использую mysql_real_escape_string() для безопасного хранения.

Когда я вытаскиваю его, чтобы посмотреть на него, все кавычки экранированы. Я попытался использовать str_replace, чтобы просто избавиться от всех кавычек, но это превратит \r\n в rn.: (

Как я могу отменить его, чтобы данные возвращались так, как они поступали?

4b9b3361

Ответ 1

Используете ли вы магические кавычки?

Примечание. Если magic_quotes_gpc включен, сначала примените stripslashes() к данные. Использование этой функции [mysql_real_escape_string] для данных который уже сбежал, будет дважды удалите данные.

Ответ 2

Кто говорит?

$keyword = "TEST'TEST";

$result1 = mysql_real_escape_string($keyword);
echo $result1 --> TEST\'TEST

$result2 = nl2br(stripslashes($result));
echo $result2 --> TEST'TEST

Ответ 3

Если вы действительно хотите отменить это из-за того, как ваши данные отформатированы, это решение, с которым я столкнулся:

function mysql_unreal_escape_string($string) {
    $characters = array('x00', 'n', 'r', '\\', '\'', '"','x1a');
    $o_chars = array("\x00", "\n", "\r", "\\", "'", "\"", "\x1a");
    for ($i = 0; $i < strlen($string); $i++) {
        if (substr($string, $i, 1) == '\\') {
            foreach ($characters as $index => $char) {
                if ($i <= strlen($string) - strlen($char) && substr($string, $i + 1, strlen($char)) == $char) {
                    $string = substr_replace($string, $o_chars[$index], $i, strlen($char) + 1);
                    break;
                }
            }
        }
    }
    return $string;
}