Bonjour,
Je suis bloquer pour la mise en oeuvre d'extraction avec preg_match.
Dans le cadre de mon travail je doit extraire des données d'un champ pour renseigner d'autre champs.
Je m'explique:
Dans un champ nommer désignation on peut trouver par exemple la donnée suivante : PRODUIT NOM 100KG
Le but est d'extraire le volume du produit, soit 100 dans un nouveau champ, puis ensuite l'unité de volume, ici KG pour renseigner un autre champ.
De plus la désignation peut être écrite en minuscule et le 100KG peut être séparer d'un espace. Les unités de volume peuvent être aussi KG, ML, G et L
J'ai réussi à faire un bou de code mais celà ne fonctionne plus quand mon unité de volume présente qu'une seul lettre.
Voici mon code:
Ce code fonctionne pour les unités en KG et ML.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 <?php $designation = "PRODUIT NOM 600KG"; //Vérification et mise en forme de la désignation en majuscule $designation = strtoupper($designation); //Recheche du volume $input = $designation; if(preg_match('/([0-9]*)ML|([0-9]*) ML|([0-9]*)KG|([0-9]*) KG/', $input, $matches)) { if(isset($matches[1])) { $volume = $matches[1]; } if(isset($matches[2])) { $volume = $matches[2]; } if(isset($matches[3])) { $volume = $matches[3]; } if(isset($matches[4])) { $volume = $matches[4]; } } if(preg_match('/'.$volume.' ([A-Z]*)|'.$volume.'([A-Z]*)/', $input, $matchesessai)) { if(isset($matchesessai[1])) { $unite = $matchesessai[1]; } if(isset($matchesessai[2])) { $unite = $matchesessai[2]; } } ?> A- <?php echo $designation; ?></br> B- <?php echo $volume; ?></br> C- <?php echo $unite; ?></br>
Avec ce code pour une condtion suplémentaire pour une unité de L:
Celà ne fonctionne plus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part if(preg_match('/([0-9]*)ML|([0-9]*) ML|([0-9]*)KG|([0-9]*) KG/|([0-9]*)L|([0-9]*) L/', $input, $matches))
Merci de votre aide pour m'indiquer si je suis sur la bonne voie ou si pour le moment de rentre dans un mur...
Partager