IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Tableaux] Comment dans la fonction "strpos" déterminer plusieur type de délimiteur ?


Sujet :

Langage PHP

  1. #1
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut [Tableaux] Comment dans la fonction "strpos" déterminer plusieur type de délimiteur ?
    Bonjour,

    Comment dans la fonction "strpos" déterminer plusieurs type de délimiteur ?

    espace, point, tiré...

    Merci d'avance

  2. #2
    Membre expérimenté
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Points : 1 341
    Points
    1 341
    Par défaut
    On ne peut pas, cf la doc.

    Donc soit tu appeles plusieurs fois strpos avec des parametres differents, soit tu te fait une fonction perso (ca se fait en 5 mn, tu passes la chaine à tester et un tableau avec la liste des lettres a tester, tu boucles sur chaque lettres de la chaine et aussitot que la lettre correspond a une entrée du tableau, tu retournes ton compteur courrant, sinon -1, et voila, le tour est joué).

    J'imagine qu'il est possible de s'en sortir avec des expressions régulière, mais pour le coup, je maitrise moins.
    Rakken

    Oneira, un monde imaginaire d'Heroic Fantasy.

    Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/

  3. #3
    Membre expérimenté
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Points : 1 341
    Points
    1 341
    Par défaut
    Allez, j'suis de bonne humeur ;-)
    Attention, code non testé.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    /**
     * Cette fonction retourne la premiere position d'un des elements passe dans le tableau
     * @param string $chaine : La chaine a tester 
     * @param array $tab : Un tableau ayant pour clefs la liste des valeurs a tester
     * @return int : La position du premier élément trouvé, -1 sinon.
    */
    function strpos_multi($chaine, $tab) {
    $len = strlen($chaine);
      for ($i = 0; $i < $len; $i++) {
        if (isset($tab[$chaine[$i]])
          return ($i);
      }
    return (-1);
    }
    Avec $tab défini comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $tab = array();
    $tab[' '] = 1; $tab['.'] = 1; $tab['-'] = 1;
    Rakken

    Oneira, un monde imaginaire d'Heroic Fantasy.

    Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/

  4. #4
    Membre régulier Avatar de randimby
    Inscrit en
    Décembre 2003
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 64
    Points : 72
    Points
    72
    Par défaut Un exemple avec RegExp.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    $pos = false; //la position du premier caractère espace, point, tiret
    $needle = " .-"; // les caractères à rechercher (espace, point, tiret)
    $quoted_needle = preg_quote($needle); //on le quote pour le passer à preg_quote
    if (preg_match("/^([^$quoted_needle]*)[$quoted_needle]/", $chaine, $match)) {
     $pos = strlen($match[1]);
    }
    ?>

  5. #5
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    J'ai fais autrement,

    Merci a vous tous !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 07/12/2013, 18h55
  2. Réponses: 1
    Dernier message: 27/01/2008, 17h15
  3. [Tableaux] erreur dans une fonction
    Par eclipse012 dans le forum Langage
    Réponses: 2
    Dernier message: 29/01/2007, 09h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo