[PHP] faire une sorte d'operateur Like

Nico -  
chico200987 Messages postés 791 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

j'aimerais tester une variable qui contient du texte.

Par exemple je voudrais faire un truc du style :

Si ma chaine commence par 06... (sorte de like "06%" sous mysql)
Si ma chaine commence par 06 et contient 6 caractères à suivre (sorte de like "06______" sous mysql)

Mais tout ça en PHP (sans mysql)

Est ce que quelqu'un aurait une idée de la manière de faire.
Merci d'avance.
A voir également:

3 réponses

chico200987 Messages postés 791 Date d'inscription   Statut Membre Dernière intervention   143
 
Salut,

Je n'ai pas testé et je ne connais pas bien les fonctions que je vais te demander d'essayer mais tu peux peutêtre utiliser strpos()

Pour ton premier cas :

<?php
$pos = strpos($tachaine, "06");
if($pos == 0)
{
     //Ca commence bien par 06
}
?>


Ton deuxième cas :

<?php
$pos = strpos($tachaine, "06");
if($pos == 0)
{
     //Ca commence bien par 06
     if(strlen($tachaine) == 8)
     {
          //Ca commence par 06 et 6 caractères suivent après..
     }
     else
     {
          //Commence par 06 mais ne fait pas 8 chrs en tout..
     }
}
else
{
     //Ne commence même pas par 06
}
?>

Test et redis moi c'que ça donne j'peux pas tester maintenant s'ry.
0
Nico
 
Merci pour ta réponse.

En effet, je pense que cette manière fonctionne, c'est d'ailleurs un code similaire que j'avais fait, mais mon idée finale serait de pouvoir ajouter autant de filtre/masque que je souhaite, sans avoir à toucher le code php.
Je m'explique avec un exemple :

je souhaiterais pouvoir déclaré à un endroit mes filtres/masques, ex :
$filtre[0]='06%';
$filtre[1]='06??????';

et que mon code PHP récupère ces filtres et vérifie que ma chaine est valide.
Mais si je rajoute les fliltres suivants :
$filtre[2]='08%';
$filtre[3]='09%';

je vais que mon code puisse interpréter ces nouvelles valeurs sans avoir à modifier le code PHP.

Tu vois le truc ?
0
chico200987 Messages postés 791 Date d'inscription   Statut Membre Dernière intervention   143
 
Hop,

Je crois voir, une fonction ne résoudrais pas ton problème ?

<?php
function valideFiltre(string $chaine, string $filtre, int $tailleStr)
{
     $ok = false;
     $pos = strpos($chaine, $filtre);
     if($pos == 0)
     {
          if(strlen($chaine) == $tailleStr)
          {
               //C'est OK
               $ok = true;
          }
     return $ok;
}

//Pour l'appeler : 
$test = valideFiltre("06000000", "06", 8);
if($test)
{
     //Tout est OK !
}
?>
0