Probleme de regex

jambonbeurre069 1 Messages postés mardi 27 décembre 2016Date d'inscription 27 décembre 2016 Dernière intervention - 27 déc. 2016 à 18:46 - Dernière réponse : Whismeril 10552 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 14 décembre 2017 Dernière intervention
- 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 

1 réponse

Répondre au sujet
Whismeril 10552 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 14 décembre 2017 Dernière intervention - 27 déc. 2016 à 19:44
0
Utile
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.