Bonjour,

Voici mon code:

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>"
?>
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