Bonjour à tous,
j'ai un soucis avec mon preg_match lorsque je veux le faire tester une chaine de caractère (à savoir une suite de chiffre).
J'ai un cookie avec les informations suivante dedans:
3.9001/2.9002/4.9003
Le but est de passer dans l'url une des valeur 90xx pour la virer du cookie.
Donc j'explose mon cookie avec les slash.
Je compte combien j'ai d'éléments, je boucle pour tester à chaque fois si la valeur passée en paramètre existe dans mes éléments.
Malheureusement mon preg_match trouve tout le temps la valeur dans les tests.
Admettons que je lui donne 9002 en paramètre.
Celui-ci va tester: 3.9001 puis 2.9002 et 4.9003.
Et pour lui dans ces trois tests la valeur 9002 a été trouvée.
Voici le code pour mieux comprendre:
Le problème se situe au test du deuxième preg_match. Oui le premier marche très bien.
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
33
34
35 if(isset($_GET['id_art']) && preg_match("/^[0-9]*$/",$_GET['id_art'])) //On teste si il y a un ID d'article à récupérer dans l'url { $optid = $_GET['id_art'];// On récupere la référence et l'option if (isset($_COOKIE['pbweb'])) // On teste si le cookie existe { $articles = explode ("/", $_COOKIE['pbweb']); //On explose le cookie avec le séparateur slash $nbarticles = count($articles); // On compte combien il y a d'article. //On va tester chaque valeur du tableau pour trouver dans quelle cellule se trouve le $id a supprimer $i = 0; $place = 0; for ($i = 0; $i < $nbarticles; $i++) { $ref = explode (".", $articles[$i]); if (preg_match("/\b".$ref[1]."\b/i", $articles[$i])) { $place = $i; //Lorsque $id est trouvé dans le tableau $place prend la valeur de la cellule } } unset($articles[$place]); // On supprime la cellule du tableau où se trouve $id $newvalcookie = implode("/", $articles); // On recrée la liste des articles avec un slash entre chaque valeur setcookie('pbweb', $newvalcookie, time() + 365*24*3600, null, null, false, true); //On met à jour le cookie echo "<br />"; echo $_COOKIE['pbweb']; } else { //header("Location: ./view_cart.php"); //Si le cookie n'existe pas on redirige vers le panier } } //header("Location: ./view_cart.php"); //Redirection vers le panier
Je vous remercie d'avance.
Partager