Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
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 07/09/2011, 14h00   #1
Nouveau Membre du Club
 
Inscription : septembre 2008
Messages : 178
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 178
Points : 25
Points : 25
Par défaut preg_replace remplacer des guillemets

Bonjour j'ai du mal avec preg_replace.
Je souhaites remplacer d''une par d'une mais je n'y parviens pas.

Code :
preg_replace("#[a-zA-Z]''#", "$0\'", $a);
dxerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 14h06   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
un str_replace suffit

Code :
str_replace("''", "'", $text);
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 14h07   #3
Nouveau Membre du Club
 
Inscription : septembre 2008
Messages : 178
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 178
Points : 25
Points : 25
Oui, mais le problème, c'est qu'il y a des valeurs comme 3.5'' qui ne doivent pas être modifiées
dxerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 14h16   #4
Membre éclairé
 
Avatar de Inazo
 
Gérant - société de développement web
Inscription : avril 2007
Messages : 290
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Gérant - société de développement web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2007
Messages : 290
Points : 360
Points : 360
Bonjour,

Juste comme ça on par d'un double ' (touche 4 clavier standard FR) ou d'un simple " (touche 3 clavier standard FR)

Car c'est juste pas du tout la même chose dans ton preg_replace ensuite

Cordialement,
__________________
Si vous débutez en PHP : Tutoriel pour grands débutants

Mes tutoriels : http://alexandre-joly.developpez.com/
Inazo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 14h17   #5
Nouveau Membre du Club
 
Inscription : septembre 2008
Messages : 178
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 178
Points : 25
Points : 25
Il s'agit de de deux guillemets simple
dxerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 14h21   #6
Membre éclairé
 
Avatar de Inazo
 
Gérant - société de développement web
Inscription : avril 2007
Messages : 290
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Gérant - société de développement web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2007
Messages : 290
Points : 360
Points : 360
Ok c'était pour être sur car j'ai souvent vue des confusion entre quotes (') et guillemets (")

Pour ton soucis tu peux nous donner un exemple de retour que tu as après ta fonction preg_replace ?

Cordialement,
__________________
Si vous débutez en PHP : Tutoriel pour grands débutants

Mes tutoriels : http://alexandre-joly.developpez.com/
Inazo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 14h22   #7
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
Citation:
Envoyé par Inazo Voir le message
Ok c'était pour être sur car j'ai souvent vue des confusion entre quotes (') et guillemets (")

Pour ton soucis tu peux nous donner un exemple de retour que tu as après ta fonction preg_replace ?

Cordialement,
le str_replace suffit, pas besoin de continuer vers le preg_replace
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 14h25   #8
Nouveau Membre du Club
 
Inscription : septembre 2008
Messages : 178
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 178
Points : 25
Points : 25
Oui mais j'ai par exemple
d''une -> d'une
3.5'' ne doit pas être modifier
Donc str_replace ne peut pas marché car il va tous remplacer.
dxerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 14h26   #9
Membre éclairé
 
Avatar de Inazo
 
Gérant - société de développement web
Inscription : avril 2007
Messages : 290
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Gérant - société de développement web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2007
Messages : 290
Points : 360
Points : 360
Oui dans un cas classique pas besoin d'aller plus loin mais il ne veut pas que la modification soit faite pour les chaine de type 3.5'' d'ou dans son preg_replace la volonté de ne faire le remplacement que pour une lettre suivie de ''.

Cordialement,
__________________
Si vous débutez en PHP : Tutoriel pour grands débutants

Mes tutoriels : http://alexandre-joly.developpez.com/
Inazo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 14h26   #10
Nouveau Membre du Club
 
Inscription : septembre 2008
Messages : 178
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 178
Points : 25
Points : 25
C'est ca
dxerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 14h30   #11
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
Citation:
Envoyé par dxerty Voir le message
Oui mais j'ai par exemple
d''une -> d'une
3.5'' ne doit pas être modifier
Donc str_replace ne peut pas marché car il va tous remplacer.
c'est 3.5" pas 3.5'' (double vs simple)
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 14h32   #12
Nouveau Membre du Club
 
Inscription : septembre 2008
Messages : 178
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 178
Points : 25
Points : 25
Ce sont des guillemets simples (touche 4)
dxerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 14h38   #13
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
Citation:
Envoyé par dxerty Voir le message
Ce sont des guillemets simples (touche 4)
pour les pouces en ASCII le caractère correct est le 3

sinon fait juste :

Code :
preg_replace('/\'+(?=\w)/', '\'', $text);
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 14h42   #14
Candidat au titre de Membre du Club
 
Développeur Web
Inscription : juin 2009
Messages : 11
Détails du profil
Informations personnelles :
Âge : 27
Localisation : Madagascar

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juin 2009
Messages : 11
Points : 13
Points : 13
Code :
1
2
3
$pattern = '/(\w+)["]{1}(\w+)/';
$replacement = "$1'$2";
echo preg_replace($pattern, $replacement, $string);
Begany est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 14h52   #15
Nouveau Membre du Club
 
Inscription : septembre 2008
Messages : 178
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 178
Points : 25
Points : 25
Merci, mais cela ne correspond pas tout a fait avec ce que je cherche.

Begany, peut m'expliquer le rôle de ton pattern, car je suis un peu perdu.

J'ai des mal avec les expressions. Peut-on trouver une liste des arguments possible dans le pattern, car le documentation de PHP reste assez mince pour cela.
dxerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 15h15   #16
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
t'as essayé le mien ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 15h19   #17
Nouveau Membre du Club
 
Inscription : septembre 2008
Messages : 178
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 178
Points : 25
Points : 25
J'ai essayer ceci:
Code :
1
2
3
4
 
$pattern = "/[a-zA-Z]['']{2}/";
$replacement = "$0\"";
$a = preg_replace($pattern, $replacement, $a);
Mais j'ai le résultat suivant:
d''une -> d''"une (2 apostrophes simple dans le premier cas et 2 apostrophes simple + 1 double dans le second)
dxerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 15h22   #18
Nouveau Membre du Club
 
Inscription : septembre 2008
Messages : 178
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 178
Points : 25
Points : 25
Oui stealth35 j'ai essayé le tiens, mais sans succès. Merci quand même.
dxerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 16h00   #19
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
Citation:
Envoyé par dxerty Voir le message
Oui stealth35 j'ai essayé le tiens, mais sans succès. Merci quand même.
montre ton code de test
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 16h19   #20
Nouveau Membre du Club
 
Inscription : septembre 2008
Messages : 178
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 178
Points : 25
Points : 25
Bon j'ai résolu mon problème

Code :
1
2
3
$pattern = "/([a-zA-Z])('')/";
$replacement = "$1'";
$a = preg_replace($pattern, $replacement, $a);
Résultat:
d''une -> d'une

Merci à tous.
dxerty 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 22h20.


 
 
 
 
Partenaires

Hébergement Web