Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/12/2010, 16h41   #1
Membre éprouvé
 
Avatar de ben.IT
 
Homme Benoît
Inscription : janvier 2009
Messages : 392
Détails du profil
Informations personnelles :
Nom : Homme Benoît
Âge : 24
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : janvier 2009
Messages : 392
Points : 438
Points : 438
Par défaut Remplacer UNIQUEMENT les doubles quotes dans une chaine complexe

Salut,
je souhaiterai remplacer dans une chaine de caractère remplacer uniquement les caractères double quotes (") par le caractère d'échappement (\").

La chaine que je récupère contient de nombreux autres caractères spéciaux qui ne doivent pas être modifiés (notamment des single quotes). Cette chaine sera utilisée dans un script shell par la suite où ces caractères ont leur importance.

Comment faire pour remplacer uniquement les double quotes ?
j'avais pensé à :
Code :
1
2
 
$echappe=str_replace("\"","\\"",$requete) ;
Les autres fonctions que j'ai vues dans la docs échappent également les simples quotes ... addslash et cci

Voici un exemple de chaine à traiter :
Code :
commande.H XX[] -- -spe'OS="XX XX" AND DE="*xyz*"'


merci d'avance,
ben
__________________
Meet the free software gang
ben.IT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2010, 16h55   #2
Membre actif
 
Avatar de hazamor
 
Homme
Développeur Web
Inscription : décembre 2008
Messages : 179
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2008
Messages : 179
Points : 199
Points : 199
Envoyer un message via MSN à hazamor
essayez avec:
Code php :
$echappe=str_replace('"','\"',$requete) ;

je reprend ton exemple:
Code php :
1
2
3
$requete= 'commande.H XX[] -- -spe\'OS="XX XX" AND DE="*xyz*"\'';
$echappe=str_replace('"','\"',$requete) ;
echo $echappe;
hazamor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2010, 17h02   #3
Membre éprouvé
 
Avatar de ben.IT
 
Homme Benoît
Inscription : janvier 2009
Messages : 392
Détails du profil
Informations personnelles :
Nom : Homme Benoît
Âge : 24
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : janvier 2009
Messages : 392
Points : 438
Points : 438
quelle andouille, je suis !!!
J'ai tout simplement oublié un antislash !!!!!!

Il en faut 3 : 2 pour le caractère spécial antislash et un pour le caractère spécial double quote !!!

Code :
$echappe=str_replace("\"","\\\"",$requete) ;
et c'est ok !

merci et à bientôt,
(désolé pour le dérangement )
ben
__________________
Meet the free software gang
ben.IT est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h47.


 
 
 
 
Partenaires

Hébergement Web