Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2909 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Aide sur une expression régulière pour preg_replace()

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Aide sur une expression régulière pour preg_replace()

n°1779187
Mush22
Le temps se chargera du reste.
Posté le 28-08-2008 à 15:26:58  profilanswer
 

Bonjour,
 
J'ai un petit problème avec une saleté d'expression régulière, j'aimerais de l'aide pour la construire.
 
Le principe est simple, je voudrais détecter dans une variable la chaîne de caractère suivante :
 
"à partir de ... €" --> sans les guillemets
 
 
Après moults essais, je n'y arrive pas.
merci d'avance.

mood
Publicité
Posté le 28-08-2008 à 15:26:58  profilanswer
 

n°1779287
Marty_McFl​y
Nan hé ho, d'accord?
Posté le 28-08-2008 à 16:51:05  profilanswer
 

"à partir de [0-9]{3}€"
enfin, ça c'est dans le cas ou tu as un montant à 3 chiffres, sans séparateur.
ça marche ??


Message édité par Marty_McFly le 28-08-2008 à 16:55:21

---------------
arg(z) = pi /2 donc z = i, moi je prends pas
n°1779289
Mush22
Le temps se chargera du reste.
Posté le 28-08-2008 à 16:55:45  profilanswer
 

Pas mieux.  
 
D'ailleurs je me demandais si on pouvait utiliser les espaces librement ou s'il fallait utiliser [:space:]...
En tous cas là visiblement ça ne fonctionne pas :)
 
EDIT : j'ai essayé avec moins de chiffre, plus de chiffre etc... sans succès


Message édité par Mush22 le 28-08-2008 à 16:59:36
n°1779300
anapajari
s/travail/glanding on hfr/gs;
Posté le 28-08-2008 à 17:02:03  profilanswer
 

tu peux montrer la texte que tu essayes de "lire". Par hasard ça ne serait pas de l'html où les caractères auraient été remplacés par leur code???

 

Autrement es-tu sur de bosser sur le même encoding entre la texte lu et ton script?

 

Sinon la regex donnée plus haut est bonne mais un peu juste j'écrirais plutot:

/partir de \d+(|\.\d{1,2})€/


Qui doit te permettre de matcher tous les nombres avec 1 ou 2 chiffres après la virgule.


Message édité par anapajari le 28-08-2008 à 17:02:50

---------------
Software and cathedrals are much the same - first we build them, then we pray.
n°1779306
Mush22
Le temps se chargera du reste.
Posté le 28-08-2008 à 17:06:19  profilanswer
 

En effet ce que j'essaie de "lire" est contenu dans un flux RSS, qui contient des caractères spéciaux qui sont encodés dans le flux. En l'occurence voici un exemple :
 
Super pc qui tue : à partir de 2 399,00 €
 
à correspondant à "à"
€ à "€"

n°1779311
anapajari
s/travail/glanding on hfr/gs;
Posté le 28-08-2008 à 17:08:56  profilanswer
 

oui donc tu te rends bien compte que "à" != "à" naaan???
Bref la regex devient:

/à  partir de \d+(|\.\d{1,2}) €/


---------------
Software and cathedrals are much the same - first we build them, then we pray.
n°1779317
Mush22
Le temps se chargera du reste.
Posté le 28-08-2008 à 17:10:14  profilanswer
 

Oui je m'en rends bien compte :D D'ailleurs j'ai fait le test aussi en mettant les à etc... Ca ne fonctionne pas.

n°1779320
Mush22
Le temps se chargera du reste.
Posté le 28-08-2008 à 17:12:38  profilanswer
 

Dans le contexte, la regex est comme ça :  
 
preg_replace("/&#224; partir de \d+(|\.\d{1,2}) &#8364;/",'<strong>//0</strong>',$description)
 
==> Le caractère séparateur dans le prix est une virgule, et non un point. Ca change quelque chose dans la regex? Je l'ai modifié pour voir, mais ça n'a rien changé. "/&#224; partir de \d+(|\,\d{1,2}) &#8364;/"


Message édité par Mush22 le 28-08-2008 à 17:14:21
n°1779330
anapajari
s/travail/glanding on hfr/gs;
Posté le 28-08-2008 à 17:19:47  profilanswer
 

faut pas backslasher la virgule (par contre le point c'était nécessaire car c'est un caractère special dans les regexs)
mais ça doit rien changer.

 

Fait déjà un preg_match juste pour vérifier/tester ce qu'il arrive à matcher.


Message édité par anapajari le 28-08-2008 à 17:21:04

---------------
Software and cathedrals are much the same - first we build them, then we pray.
n°1779337
Mush22
Le temps se chargera du reste.
Posté le 28-08-2008 à 17:22:32  profilanswer
 

preg_match() fait, en enlevant le backslash pour la virgule. Le résultat est 0 à chaque ligne.

mood
Publicité
Posté le 28-08-2008 à 17:22:32  profilanswer
 

n°1779950
Mush22
Le temps se chargera du reste.
Posté le 29-08-2008 à 13:42:34  profilanswer
 

Je suis arrivé à bricoler un petit truc qui marche, mais pas quand le nombre avant la virgule contient un espace (exemple : 2 550). Que dois-je remplacer?
 
Et aussi, dans le second argument de mon preg_replace, j'ai mis //0 pour qu'il mette la chaine trouvée dans le première argument, ca ne marche pas, il faut mettre quoi?
 
merci :D

n°1779987
anapajari
s/travail/glanding on hfr/gs;
Posté le 29-08-2008 à 14:12:37  profilanswer
 

Mush22 a écrit :

Je suis arrivé à bricoler un petit truc qui marche, mais pas quand le nombre avant la virgule contient un espace (exemple : 2 550). Que dois-je remplacer?


/&#224;  partir de [\s\d]+(|\.\d{1,2}) &#8364;/


Mais attention car cela va tolérer beaucoup plus de chose que tu ne l'espere , genre "1 2 3"

 
Mush22 a écrit :

Et aussi, dans le second argument de mon preg_replace, j'ai mis //0 pour qu'il mette la chaine trouvée dans le première argument, ca ne marche pas, il faut mettre quoi?


$0
les \\n sont des "back-"références" que tu peux utiliser dans ta pattern.

 


Message édité par anapajari le 29-08-2008 à 14:12:57

---------------
Software and cathedrals are much the same - first we build them, then we pray.
n°2160811
becomfr
Posté le 19-10-2012 à 21:36:22  profilanswer
 


Bonjour,
 
Je n'arrive pas à mettre en place correctement un "preg_replace" (php) pour faire ce qui suit. Pouvez vous m'aider ?
 
 
======================= >
======================= > CSS ORIGINAL :  
======================= >
 
* {
 clear:none;
}
 
article, aside, details, figcaption, figure, footer, header, hgroup, nav, section {
 display:block;
}
 
aside a, aside .a, aside p a, aside p .a {
 color:#f7f7f7;
}
 
 
#informations_legales aside p a, #informations_legales aside p .a {
 color:@666666;
}
 
audio, canvas, video {
 display:inline-block;
}
 
audio:not([controls]) {
 display:none;
}
 
======================= >
======================= > TRANSFORMER DE CETTE MANIERE (dupliquer et ajouter sous forme de class portant le même non que le type de balise HTML5) :  
======================= >
 
* {
 clear:none;
}
 
article, .article, aside, .aside, details, .details, figcaption, .figcaption, figure, .figure, footer, .footer, header, .header, hgroup, .hgroup, nav, .nav, section, .section {
 display:block;
}
 
aside a, .aside a, aside .a, .aside .a, aside p a, .aside p a, aside p .a, .aside p .a {
 color:#f7f7f7;
}
 
 
#informations_legales aside p a, #informations_legales .aside p a, #informations_legales aside p .a, #informations_legales .aside p .a {
 color:@666666;
}
 
audio, .audio, canvas, .canvas, video, .video {
 display:inline-block;
}
 
audio:not([controls]), .audio:not([controls]) {
 display:none;
}
 
 
======================= >
======================= > LISTE DE BALISES HTML5 CONCERNEES : article|aside|audio|canvas|command|datalist|details|embed|figcaption|figure|footer|header|hgroup|keygen|mark|meter|nav|output|progress|rp|rt|ruby|section|source|summary|time|video|wbr
======================= >
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Aide sur une expression régulière pour preg_replace()

 

Sujets relatifs
à l'aide : mon script ne fonctionne pas sous w2kBesoin d'aide pour une expression régulière
Besoin d'aideAide pour une requête de maintenance
Aide pour schéma de base de donnéeprobleme avec preg_replace
[MySQL]Aide pour recuperer des bbcodes 
Plus de sujets relatifs à : Aide sur une expression régulière pour preg_replace()


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR