Bonjour,
Je développe un petit webservice de type REST où les options produit sont stockées sous la forme : 10-251,11-197,18-249
Pour mettre à jour ce produit, je dois remplacer par exemple la sous-chaine 11-197 par 20-202.
La difficulté vient du fait que cette sous-chaine peut être au début, au milieu ou à la fin de la chaine principale.
Ma première idée a été de décomposer en plusieurs regex pour chaque cas de figure et cela fonctionne.
Cependant je suis un peu rouillé dans ce domaine, et ce n'est sans doute pas optimisé. Comment feriez-vous de votre coté ?
Edit : j'ai pu simplifier déjà un peu les patterns
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 // batterie de test $stringa = '11-1978'; $stringb = '211-197'; $string1 = '11-197'; $string2 = '11-197,18-249'; $string3 = '10-251,11-197,11-1977'; $string4 = '411-197,18-249,11-197'; $string5 = '10-251,11-1972,11-197,811-197'; $patterns = array(); $patterns[] = '/^11-197$/'; $patterns[] = '/^11-197,/'; $patterns[] = '/,11-197,/'; $patterns[] = '/,11-197$/'; $replacements = array(); $replacements[] = '20-202'; $replacements[] = '20-202,'; $replacements[] = ',20-202,'; $replacements[] = ',20-202'; echo preg_replace($patterns, $replacements, $stringa); echo '<br/>'; echo preg_replace($patterns, $replacements, $stringb); echo '<br/>'; echo preg_replace($patterns, $replacements, $string1); echo '<br/>'; echo preg_replace($patterns, $replacements, $string2); echo '<br/>'; echo preg_replace($patterns, $replacements, $string3); echo '<br/>'; echo preg_replace($patterns, $replacements, $string4); echo '<br/>'; echo preg_replace($patterns, $replacements, $string5);
Partager