Page 1 sur 1
Expression régulière
Posté : 12 janv. 2010, 20:39
par coldwarkid
Bonsoir à tous,
Voici mon problème, j'aimerais extraire un prix de type "12.50 €" ou "12,50 €" ou "12 €" d'une chaîne de caractère contenant
avant ce prix du texte (environ 100 caractères).
J'ai regardé du côté des expressions régulières mais je pense qu'il va me falloir du temps pour appréhender toute la syntaxe.
Peut-être que quelqu'un pourrait m'orienter vers une solution et m'expliquer son fonctionnement.
Merci d'avance pour votre aide précieuse,
Seb
Re: Expression régulière
Posté : 12 janv. 2010, 22:00
par niuxe
Hello,
Je fais vite un passage éclair. Pour les expressions rationnelles, je t'invite à parcourir ce
site. Dans l'immédiat, ton soucis devrait être résolu par ceci :
$motif= "#\d+([.,]\d{2})? €#"; //PCRE
bonne soirée
Re: Expression régulière
Posté : 13 janv. 2010, 00:33
par ooflorent
L'expression de Niuxe reflète l'idée du motif à appliquer mais le masque n'est pas bon (ne sélectionne pas les premiers chiffres).
<?php
$subject = 'Un prix de 12,30€ au lieu de 15 € soit 2.70€ de gagné !';
preg_match_all('/(\d+(?:[\.,][\d]{2})?)\s*€/', $subject, $matches);
print_r($matches[1]);
?>
Re: Expression régulière
Posté : 14 janv. 2010, 02:35
par niuxe
Hello,
L'expression de Nolem reflète l'idée du motif à appliquer mais le masque n'est pas bon (ne sélectionne pas les premiers chiffres).
En es tu sûr ?
En rapport avec ta chaine et en reprenant mon motif :
$motif= "#\d+([.,]\d{2})?( )?€#";
Bonne soirée
Re: Expression régulière
Posté : 15 janv. 2010, 10:48
par coldwarkid
Bonjour à tous et merci infiniment pour vos messages.
Je vais regarder de près vos solutions dans le courant de la journée.
Merci, je vous tiendrai informé en retour.
Seb
Re: Expression régulière
Posté : 15 janv. 2010, 11:03
par coldwarkid
<?php
$subject = 'Un prix de 12,30€ au lieu de 15 € soit 2.70€ de gagné !';
preg_match_all('/(\d+(?:[\.,][\d]{2})?)\s*€/', $subject, $matches);
print_r($matches[1]);
?>
Cette solution fonctionne bien pour mon cas.
Merci encore !
Seb
Re: Expression régulière
Posté : 15 janv. 2010, 22:37
par ooflorent
Niuxe, ton premier \d n'est pas dans le sous-masque !

Re: Expression régulière
Posté : 16 janv. 2010, 01:54
par niuxe
Niuxe, ton premier \d n'est pas dans le sous-masque !

Effectivement, je viens de le voir en testant chez moi le script, il manque bien un sous-masque pour mieux capturer le tout. Autant pour moi. Bien vu
