Admettons que vous aillez une série de test à effectuer sur une chaîne :
ex :
Pour faire ça, vous allez devoir :
La fonction ci-dessous ce charge pour une chaîne donnée de “regarder” si elle correspond ou non a une liste de critères donnée.
function array_pregmatch($array_pattern, $haystack) { /*Cherche une occurrence correspondant a une des regexps dans une chaîne*/ if (count($array_pattern)==0) return false; foreach ($array_pattern as $pattern) { /*cas d'une expression régulière*/ if ($pattern{0}=='/') { if (preg_match($pattern, $haystack)) return true; /*cas d'une expression a évaluer*/ } elseif ($pattern{0}=='#') { eval('$r='.str_replace('%s',$haystack,substr($pattern,1)).((substr($pattern,-1)!=';')?';':'')); if ($r) return true; /*cas d'une chaine normale*/ } else { if (strpos($haystack, $pattern)!==false) return true; } } return false; }
$array_pattern est donc un tableau qui va contenir toutes les conditions a appliquer a la chaîne.
ex :
$array_pattern[]="#strlen('%s')<=2"; $array_pattern[]="/[A-Za-z0-9_ ]*/";
Reprenons les critères cité plus haut et voyons comment les utiliser avec la fonctions
$machaine="et hop un petit test pour le wikistuce"; $stop[]="#strlen('%s')<=2"; $stop[]="/[A-Za-z0-9_ ]*/"; $stop[]="hello"; $ret=array_pregmatch($stop, $machaine); if ($ret==true) { echo "au moins une des condition est vérifiée"; } else { echo "aucune condition n'est vérifiée"; }
— iDo 27/04/2006 14:01
Discussion