If php

Résolu
Bonjour,

j'ai créer un site internet mais je ne parviens pas à testé une valeur remplie par l'utilisateur.

Ce que je souhaite tester :

Si la valeur $mail contient @, afficher "Positif". Si pas, afficher "Négatif".

Code php utilisé :

if (stripos($mail, '@') !== FALSE)  
{echo 'Positif'}  

else {echo 'Négatif<br />'}


Pourriez-vous m'aider à m'orienter vers un tutoriel ou autre qui me permettrait de résoudre ce problème?

Merci d'avance pour l'aide que vous saurez m'apporter.

4 réponses

  1. <?php
    
    $pos = strrpos($mystring, "b");
    if ($pos === false) { 
    echo 'pas trouvé';}
    else
    echo 'trouvé';
    
    ?>

    1. Quel intérêt ?
      Utiliser strrpos au lieu de stripos ?
      Chercher 'b' au lieu de '@'?
      Utiliser une variable intermédiaire au lieu d'appeler la fonction de recherche directement dans le if ?
      Qu'est-ce que tout ça apporte à rolly41, surtout sans aucun commentaire ?

      Sa seule erreur était l'absence de point virgules, mais il connaît cette erreur depuis 11h48 et il avait même eu une solution plus efficace une heure plus tôt !
  2. Bonjour

    Tu as oublié les ; à la fin des instructions echo 'Positif' et echo 'Négatif<br />'.

    Le mieux est de suivre le conseil de dariumis et d'utiliser filter_var($mail, FILTER_VALIDATE_EMAIL). Par contre, ne suis pas sa remarque sur !=, c'est bien !== qu'il faut absolument utiliser avec stripos.
    1. Salut, différent s'écrit comme ça:

      if (stripos($mail, '@') != FALSE)  


      Sinon pour tester un adresse mail, tu peux faire comme ça:

      if (filter_var($mail, FILTER_VALIDATE_EMAIL)) {
          echo 'Positif';
      }  else {
           echo 'Négatif<br />';
      }
      
      1. if (stripos($mail, '@'))

        fonctionne aussi...
      2. NON !
        ni if (stripos($mail, '@') != FALSE) , ni if (stripos($mail, '@')) ne sont valables pour détecter s'il y a un @ dans une chaîne.
        Le test avec !== FALSE écrit par rolly41 est le seul valable car stripos peut rendre 0 et que 0 est considéré comme false par PHP dans les comparaisons simples.
        Inutile de 'corriger' ce qui était exact en proposant une erreur à la place.