Bonjour,
Voici mon code:
Ce que je voudrais c'est que le masque ne soit plus vérifié s'il y a "1031" plus de 2 fois dans la chaine.
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 <?php $tab_product = array("1045","1031","1038","1052","1031","1026","1031"); //un tableau asort($tab_product); // tri du tableau $subject = implode(" ", $tab_product); // remettre le tableau sous forme de chaînes séparées par des espaces $pattern = "(\ ?(1031)($|\ )){2,2}"; $pattern = "/$pattern/"; echo "<pre>subject: $subject</pre>"; echo "<pre>parttern: $pattern</pre>"; if (preg_match($pattern, $subject, $matches)===1) echo "<pre>mask successful</pre>"; else echo "<pre>mask failed</pre>"; echo "<pre>"; var_dump($matches); echo "</pre>" ?>
Dans mon masque j'ai bien indiqué {2,2} mais rien n'y fait... c'est comme s'il n'en tenait pas compte.
Je ne comprends évidement pas pourquoi...
Pourtant dans la doc, je lis bien:
Les répétitions sont spécifiées avec des quantificateurs, qui peuvent être placés à la suite des caractères suivants :
- ...
- Un sous-masque avec parenthèses (à moins que ce ne soit une assertion, voir plus loin)
Est-ce que qqu'un pourrait m'éclairer?
Merci d'avance
Partager