2009-07-23 7 views
11

J'ai une donnée volumineuse qui va probablement contenir des guillemets et des guillemets.reverse mysql_real_escape_string

J'utilise mysql_real_escape_string() pour le stocker en toute sécurité.

Lorsque je le retire pour le regarder, tous les guillemets sont échappés. J'ai essayé d'utiliser str_replace pour se débarrasser de toutes les citations, mais cela tourne \r\n en rn. :(

Comment puis-je inverser si les données revient sur la façon dont il est allé dans

Répondre

6

-vous utiliser les guillemets magiques

Note:? Si magic_quotes_gpc est activé, première applique stripslashes() aux données . cette fonction [mysql_real_escape_string] sur les données qui a déjà été protégées échapper aux données deux fois.

9

Qui a dit?

$keyword = "TEST'TEST"; 

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

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

Après des échappements de chaînes, votre chaîne peut devenir « TEST \ r \ n \ 'TEST ", dans ce cas, nl2br ne fonctionnera pas. J'ai donc fait quelque chose comme ceci: stripslashes (str_replace ('\ r \ n', '
', nl2br ("TEST \ r \ n \ 'TEST"))) –

1

Si vous voulez vraiment inverser cette tendance en raison de la façon dont vos données sont formatées, c'est une solution je suis venu avec:

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; 
} 
Questions connexes