Bonjour,
Alors voici mon probleme j'ai un tableau de chaine de caracteres type: Meringue italienne 50g , Feuilles de gélatine 3, Cubes 10 x 10 d'ananas 150g
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.
Salut,
C'est compliqué car tes quantités sont à la fin mais n'ont pas toujours le même format. Tu ne peux pas faire en sorte d'indiquer d'abord l'ingrédient dans un input, puis la quantité dans une autre ? Ca serait plus simple je pense.
Sinon, tu peux partir sur une regexp qui ne prendrait que les caractères numériques, et essayer d'extraire comme cela.
Perso, je stockerais ça dans un JSON que j'insère en BD (champ de type JSON, MySQL 5.7+). Ce serait bien plus simple pour faire des opérations dessus ;)
Merci pour ta reponse rapide mais malheureusement j'ai que ce format car c'est sorti d'un fichier excel que je n'ai pas le droit de modifier.
On ne peut pas faire une regex qui prend les deniers les derniers chiffre et la suite des caracteres apres ?
Tu peux tenter avec ce code :
preg_match ('(([,0-9]+[a-zA-Z]*)$)', $value, $matches);
dans $matches tu auras ta quantite (avec l'unite) il te suffira donc de retirer, à $value, la longueur de ta quantite et tu auras ton titre, sinon je vois pas
Salut,
Un problème, c'est que ça va aussi "matcher" sur les "10" de "10 10".
(je crois...)*
Si la quantité est TOUJOURS en dernier,
peut-être qu'a la place d'une REGEXP, tu peux utiliser explode/implode :
$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)
{
$words = explode(' ', $value);
$quantity = array_pop($words);
$title = implode(' ', $words);
echo 'Titre : ' . $title . '<br>';
echo 'Quantité : ' . $quantity . '<br>';
}
[EDIT]
La REGEXP d'AlexJM, m'intriguai alors j'ai voulu essayer, et ça fonctionne parfaitement.
(d'ailleurs maintenant, je comprend pourquoi ça fonctionne)
Excuse-moi Alex ^^