2009-07-23 3 views
11

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

Я использую mysql_real_escape_string(), чтобы сохранить его безопасно.

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

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

ответ

6

использовать волшебные кавычки ли

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

9

Кто говорит?

$keyword = "TEST'TEST"; 

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

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

После побега строки, ваша строка может стать «TEST \ г \ n \ 'TEST ", в этом случае nl2br не будет работать. Поэтому я сделал что-то вроде этого: stripslashes (str_replace ('\ r \ n', '
', nl2br ("TEST \ r \ n \ 'TEST"))) –

1

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

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; 
} 
Смежные вопросы