Probleme de regex

Messages postés
1
Date d'inscription
mardi 27 décembre 2016
Dernière intervention
27 décembre 2016
- - Dernière réponse : Whismeril
Messages postés
12368
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 décembre 2018
- 27 déc. 2016 à 19:44
Bonjour,
Alors voici mon problème j'ai un tableau de chaîne de caractères type: Meringue italienne 50g , Feuilles de gélatine 3, Cubes 10 x 10 d'ananas 150g
Malheureusement j'ai que ce format car c'est sorti d'un fichier excel que je n'ai pas le droit de modifier et je doit séparer le titre de la quantité.

$tab_string = array("Meringue italienne 50g", "Feuilles de gélatine 3", "Cubes 10 x 10 d'ananas  150g", "Crème liquide 1,5cl");
foreach ($tab_string as &$value) {
$titre="";
$quantite="";
//je fait ma regex
echo "titre ".$titre;
echo "quantité ".$quantite."<br/>";
}


Hors je n'arrive pas à trouver comment faire une bonne regex afin de pouvoir faire mon truc merci pour votre aide par avance et joyeuse fête.
Afficher la suite 

Votre réponse

1 réponse

Messages postés
12368
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 décembre 2018
0
Merci
Bonsoir

je suis plutôt partisan des Regex, mais y'a des cas ou ça n'est pas forcément utile.

Tes exemples ont tous un espace entre la description et la quantité, en splitant ton texte (avec preg_split) tu pourras dans la dernière "case" du résultat récupérer la quantité, les autres cases seront la description.

Si tu veux vraiment une regex, il existe des sites en ligne pour les tester (je ne code pas en PHP, mais j'en ai trouvé pour PHP).

En général, ils proposent aussi un lexique de la syntaxe.

En gros ce qui ressort de tes exemples c'est:
  • début de texte
  • un groupement contenant n'importe quel caractères plusieurs fois
  • un espace
  • un groupement contenant un ou plusieurs chiffres éventuellement d'une virgule suivi d'au moins un chiffre et éventuellement suivis de lettres
  • fin de texte


^(.+) (\d+(?:,\d+)?(?:\w?)+)$


Commenter la réponse de Whismeril

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.