Erreur fonction PHP

karine -  
Dr Zoidberg Messages postés 547 Statut Membre -
Bonjour,

j'ai une erreur dans mon code mais j'arrive pas à trouver d'où cela provient ... :

function checkIfStringContainsBadword($string)
{
$badword = "blabla" ;

if (preg_match($string, "^*" . $badword . "*$"))
{
return true ;
}
else
{
return false ;
}
}

?>
Configuration: Windows XP
Firefox 3.5

8 réponses

  1. nEm3sis Messages postés 722 Statut Membre 113
     
    quelle est l'erreur ?
    0
  2. Utilisateur anonyme
     
    <?php
    function checkIfStringContainsBadword($string)
    {
    $badword = "blabla" ;
    
    if (preg_match($string, "^*" . $badword . "*$"))
    {
    return true ;
    }
    else
    {
    return false ;
    }
    };
    
    ?>


    non ?
    0
  3. nEm3sis Messages postés 722 Statut Membre 113
     
    après réflexion:

    1) au lieu de faire if (preg_match) autant retourner directement preg_match ça fait la même chose
    2) tu as inversé les paramètre de preg_match
    3) tu mettais "^*".$string."*$"
    si mes souvenir sont bon ça veut dire commence par (nombre de caractère indéfini) est suivi par $badword et se termine par (nombre de caractère indéfini)
    autant mettre a la place juste la recherche du mot $badword non ?

    j'ai testé ça, ça a l'air de marcher bien
    <?php
    function checkIfStringContainsBadword($string)
    {
    	$badword = "/blabla/" ;
    	return preg_match($badword, $string);
    }
    
    echo (checkIfStringContainsBadword('blablabla'))?'oui':'non';
    echo (checkIfStringContainsBadword('blobloblo'))?'oui':'non';
    ?>
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. karine
     
    Par contre , j'ai pas inversé les parametre , ce que je verifie c'est la présence du mot $badword dans la chainse $string passé en parametre. ensuite , j'ai pas trés bien compris comment tu retourne la reponse avec les oui: non ... j'ai jamais vu ça :s
    0
  6. nEm3sis Messages postés 722 Statut Membre 113
     
    pour l'ordre des paramètre il faut mettre en premier paramètre ce que tu cherche et ensuite la chaîne dans laquelle tu va cherché

    pour la fin que tu connaissais pas en fait c'est tout simple

    pour echo c'est de la forme
    echo EXPRESSION;
    et mon expression c'est ça (checkIfStringContainsBadword('blobloblo'))?'oui':'non'
    de la forme :
    ( CONDITION ) ? EXPRESSION SI LA CONDITION EST VRAIE : EXPRESSION SI LA CONDITION EST FAUSSE

    en fait c'est la même chose que
    if (checkIfStringContainsBadword('blobloblo'))
      echo 'oui';
    else
      echo 'non';
    
    0
  7. karine
     
    parfait! j'ai tout compris! tu avait raison pour les paramètres :D! merci beaucoup! bonne journée!
    0
  8. Dr Zoidberg Messages postés 547 Statut Membre 100
     
    Salut,

    Iil y a un truc que je ne comprends pas, pourquoi utiliser preg_match ?
    D'après la doc php :
    N'utilisez pas preg_match() si vous voulez uniquement savoir si une chaîne est contenue dans une autre. Utilisez dans ce cas les fonctions strpos() ou strstr(), qui sont beaucoup plus rapides.
    0