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 ! :wink:

Re: Expression régulière

Posté : 16 janv. 2010, 01:54
par niuxe
Niuxe, ton premier \d n'est pas dans le sous-masque ! :wink:
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 :)