|
Voir le sujet précédent :: Voir le sujet suivant
|
| Auteur |
Message |
| |
|
Leonick WRInaute accro

Inscrit le: 08 Aoû 2004 Messages: 9181 Localisation: Val de Marne
|
Posté le : Ven Nov 17, 2006 18:49 Sujet du message: Problème de regex |
|
|
Voilà, j'ai un texte
| Code: |
| Montant TTC <b>46 800</b> pour <b>la facture</b>. |
dans lequel j'aimerais récupérer le montant. Mais des fois, au lieu de Montant TTC il est inscrit "Total"
J'ai fait un preg_match avec cette expression
| Code: |
| #[\b(Montant TTC|Total)\b]\s<b>([^<]*)</b># |
et le problème, c'est qu'il devrait me sortir
| Code: |
| Montant TTC <b>46 800</b> |
alors que j'obtiens
| Code: |
* [0]=>C <b>46 800</b>
* [1]=>46 800
|
En fait, il semble considérer Montant TTC comme au choix n'importe laquelle des lettres
Comment faudrait-il faire le masque ?
Merci |
|
| |
|
 |
oxman WRInaute occasionnel

Inscrit le: 21 Juin 2004 Messages: 118
|
Posté le : Ven Nov 17, 2006 19:05 Sujet du message: Problème de regex |
|
|
| #([0-9]+)</b> pour <b>la facture</b># |
|
| |
|
 |
Leonick WRInaute accro

Inscrit le: 08 Aoû 2004 Messages: 9181 Localisation: Val de Marne
|
Posté le : Ven Nov 17, 2006 19:11 Sujet du message: Problème de regex |
|
|
oui, mais je n'ai pas toujours cette fin.
La seule chose semi-constante est Montant TTC ou Total avant et la valeur entre les balises <b>, mais comme il y a comme séparateur des milliers, plus des fois une valeur avec une virgule, en fait je voudrais pouvoir capturer tout ce qui est entre les balises <b> juste après le Montant TTC ou Total.
C'est pour cela que j'avais laissé la 2° balise <b> pour montrer que je ne pouvais pas toutes les capturer.  |
|
| |
|
 |
oxman WRInaute occasionnel

Inscrit le: 21 Juin 2004 Messages: 118
|
Posté le : Ven Nov 17, 2006 19:22 Sujet du message: Problème de regex |
|
|
| #[\b(Montant TTC|Total)\b]\s<b>([^<]+)?([0-9]+)</b># |
|
| |
|
 |
Leonick WRInaute accro

Inscrit le: 08 Aoû 2004 Messages: 9181 Localisation: Val de Marne
|
Posté le : Ven Nov 17, 2006 19:39 Sujet du message: Problème de regex |
|
|
Non, il me sort toujours
| Code: |
* [0]=>C <b>46 800</b>
* [1]=>46 800 |
au lieu de
| Code: |
* [0]=>Montant TTC <b>46 800</b>
* [1]=>46 800 |
|
|
| |
|
 |
oxman WRInaute occasionnel

Inscrit le: 21 Juin 2004 Messages: 118
|
Posté le : Ven Nov 17, 2006 21:27 Sujet du message: Problème de regex |
|
|
| Vérifie dans [2] |
|
| |
|
 |
Leonick WRInaute accro

Inscrit le: 08 Aoû 2004 Messages: 9181 Localisation: Val de Marne
|
Posté le : Ven Nov 17, 2006 21:42 Sujet du message: Problème de regex |
|
|
Je n'avais pas fait attention, c'est encore pire
| Code: |
| Array ( [0] => Array ( [0] => C 46 800 [1] => 46 80 [2] => 0 ) ) |
il me coupe carrément la valeur. Mais je n'arrive toujours pas à récupérer le masque en entier |
|
| |
|
 |
oxman WRInaute occasionnel

Inscrit le: 21 Juin 2004 Messages: 118
|
Posté le : Ven Nov 17, 2006 21:49 Sujet du message: Problème de regex |
|
|
| #[(Montant TTC|Total)] <b>([^<]+)?;([0-9]+)</b># |
|
| |
|
 |
Leonick WRInaute accro

Inscrit le: 08 Aoû 2004 Messages: 9181 Localisation: Val de Marne
|
Posté le : Ven Nov 17, 2006 22:33 Sujet du message: Problème de regex |
|
|
pas mieux
| Code: |
| ( [0] => Array ( [0] => C 46 800 [1] => 46 [2] => 800 ) ) |
Au début, j'avais commencé comme cela, à la manière de eregi() mais je n'ai jamais réussi à obtenir le masque entière  |
|
| |
|
 |
oxman WRInaute occasionnel

Inscrit le: 21 Juin 2004 Messages: 118
|
Posté le : Sam Nov 18, 2006 0:04 Sujet du message: Problème de regex |
|
|
Pas mieux ?
Dans [2] tu as le montant et c'est ce que tu veux. |
|
| |
|
 |
Leonick WRInaute accro

Inscrit le: 08 Aoû 2004 Messages: 9181 Localisation: Val de Marne
|
Posté le : Sam Nov 18, 2006 0:11 Sujet du message: Problème de regex |
|
|
En fait, je voulais le masque complet, pour ne pas être obligé de refaire un appel pour savoir si c'était montant TTC ou total et aussi le prix. Donc le prix on arrive à l'avoir, mais la capture pourrait s'appliquer sur d'autres endroits dans le texte à lire, partout où le <b> serait précédé d'un espace et de n'importe quel caractère du masque, donc soit "M" soit "o", soit "n", etc... au lieu du mot en totalité  |
|
| |
|
 |
oxman WRInaute occasionnel

Inscrit le: 21 Juin 2004 Messages: 118
|
Posté le : Sam Nov 18, 2006 0:52 Sujet du message: Problème de regex |
|
|
#((Montant TTC)|(Total)) <b>([^<]+)?;([0-9]+)</b>#
Il faut être précis quand on pose une question.
Bonne soirée/nuit. |
|
| |
|
 |
Leonick WRInaute accro

Inscrit le: 08 Aoû 2004 Messages: 9181 Localisation: Val de Marne
|
Posté le : Sam Nov 18, 2006 12:31 Sujet du message: Problème de regex |
|
|
Ca marche.
Merci
Je suis nul de ne pas avoir trouvé ça
En fait, dans les motifs de capture on peut mettre des mots complets, mais pas dans les autres motifs ?
| oxman a écrit: |
| Bonne soirée/nuit. |
J'y étais déjà à cette heure |
|
| |
|
 |
oxman WRInaute occasionnel

Inscrit le: 21 Juin 2004 Messages: 118
|
Posté le : Sam Nov 18, 2006 13:19 Sujet du message: Problème de regex |
|
|
| Tu mets ce que tu veux, j'aurais pu très bien mettre (^Montant TTC) |
|
| |
|
 |
Leonick WRInaute accro

Inscrit le: 08 Aoû 2004 Messages: 9181 Localisation: Val de Marne
|
Posté le : Sam Nov 18, 2006 13:23 Sujet du message: Problème de regex |
|
|
| mais dans les motifs non capturants, si on mets
il considère que cela peut être n'importe quelle lettre comprise dans les crochets, même si elle est seule |
|
| |
|
 |
| |
|
|