Problème de regex

Voilà, j'ai un texte
Code:
Montant TTC <b>46&nbsp;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&nbsp;800</b>
alors que j'obtiens
Code:
* [0]=>C <b>46&nbsp;800</b>
* [1]=>46&nbsp;800
En fait, il semble considérer Montant TTC comme au choix n'importe laquelle des lettres :cry:
Comment faudrait-il faire le masque ?
Merci
 
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 &nbsp; 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. :cry:
 
Non, il me sort toujours
Code:
* [0]=>C <b>46&nbsp;800</b>
* [1]=>46&nbsp;800
au lieu de
Code:
* [0]=>Montant TTC <b>46&nbsp;800</b>
* [1]=>46&nbsp;800
 
Je n'avais pas fait attention, c'est encore pire :cry:
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
 
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 :cry:
 
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é :cry:
 
#((Montant TTC)|(Total)) <b>([^<]+)?;([0-9]+)</b>#

Il faut être précis quand on pose une question.
Bonne soirée/nuit.
 
Ca marche.
Merci
Je suis nul de ne pas avoir trouvé ça :oops:
En fait, dans les motifs de capture on peut mettre des mots complets, mais pas dans les autres motifs ?
oxman a dit:
Bonne soirée/nuit.
J'y étais déjà à cette heure
 
mais dans les motifs non capturants, si on mets
Code:
[Montant TTC]
il considère que cela peut être n'importe quelle lettre comprise dans les crochets, même si elle est seule
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut