Les Allergies
Alimentaires
Posez votre question Signaler

[PHP] faire une sorte d'operateur Like

Nico - Dernière réponse le 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.
Lire la suite 

[PHP] faire une sorte d'operateur Like »

3 réponses
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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 ?
Ajouter un commentaire
Réponse
+0
moins plus
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 !
}
?>
Ajouter un commentaire
Ce document intitulé « [PHP] faire une sorte d'operateur Like » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?