[PHP] faire une sorte d'operateur Like

Fermé
Nico - 28 mars 2008 à 15:32
chico200987 Messages postés 791 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 30 juillet 2018 - 28 mars 2008 à 16:54
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.

3 réponses

chico200987 Messages postés 791 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 30 juillet 2018 143
28 mars 2008 à 16:23
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
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 mardi 6 avril 2004 Statut Membre Dernière intervention 30 juillet 2018 143
28 mars 2008 à 16:54
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