Soucis stripslashes en PHP

WRInaute occasionnel
salut,

j'ai un petit soucis avec la fonction stripslashes.

Bon, la fonction addslashes ajoute des slash de vant ", \ et NULL.

Avant de faire un addslashes, je fait un stripslashes au cas ou, et j'ai remarqué que "TOUS" les slash passe à la trappe !

en effet, si j'ai par exemple une chaine : "blabla\bloblo" , le slash sera supprimé ...

je lis pourtant que stripslashes est l'inverse de addslashes, donc ca devrait supprimer les anti slash qui sont devant \ (\\) , " (\") et NULL (\NULL), alors pourquoi supprime t'elle aussi des anti slash "solitaires" ?

Est-ce normal ?

merci d'avance !
 
WRInaute discret
C'est le comportement habituel.
Tu ne devrais pas faire un stripslashes avant de faire le addslashes. Vas-y direct.
 
WRInaute impliqué
Tu peux utiliser str_replace() pour supprimer ce que tu veux:

Code:
$search = array("\\", "\'");
$replace = array("\", "'");
$string = str_replace($search, $replace, $string);
 
WRInaute accro
d'où l'intérêt de vérifier, avant de faire un addslashes l'état du get_magic_quotes_gpc, vu sur la page de stripslashes()
Pour plus d'informations sur les "magic quotes", lisez la documentation sur get_magic_quotes_gpc .

Voir aussi addslashes et get_magic_quotes_gpc .
 
WRInaute passionné
ouai

les slashes c'est un peu le box en php

la commande stripslashes considere le backslash comme etant un caractère d'echappement (héritage d'autres langages)

le magic quote activé rajoute automatiquement un backslash à tout stdin (acquisition de données) et stdout (sortie de données)

si on implémente un addshash au traitement, on se retrouve avec un double echappement

et bien evidemment un stripslash n'en retirera qu'un

c'est la raison pour laquelle je prefere la solution du str_replace

rog
 
WRInaute accro
rog a dit:
si on implémente un addshash au traitement, on se retrouve avec un double echappement
non, si on vérifie avant de faire un addslashe s'il est nécessaire, c'est à dire si magic quote n'est pas activé
 
Discussions similaires
Haut