Expression rationnelle : masque détecté 2 fois au plus
Bonjour,
Voici mon code:
Code:
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>"
?> |
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.
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