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 :

Fonction strtok et récupération des fragments [Fait]


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de GarGamel55
    Profil pro
    Inscrit en
    Août 2005
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 154
    Points : 106
    Points
    106
    Par défaut Fonction strtok et récupération des fragments
    Bonjour à tous,

    J'ai récupéré puis découpé une chaine de caractères envoyées depuis un formulaire grace à la fonction strtok.

    Je n'arrive pas à récupérer les fragments pour les utiliser dans une requête Mysql.

    Ex : Phrase envoyée : Antoine champion Olympique
    Avec la fonction strtok j'ai séparé les espaces vides, j'ai donc
    Antoine
    champion
    Olympique

    Mais comment je fais pour pour par exemple ne faire afficher que "champion" ?

    Merci pour vos réponses

  2. #2
    Membre confirmé Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Points : 540
    Points
    540
    Par défaut
    Je ne connais pas strtok, j'utilise explode, voici l'exemple tiré de php.net:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $pizza  = "pièce1 pièce2 pièce3 pièce4 pièce5 pièce6";
    $pieces = explode(" ", $pizza);
    echo $pieces[0]; // pièce1
    echo $pieces[1]; // pièce2

  3. #3
    Membre régulier Avatar de GarGamel55
    Profil pro
    Inscrit en
    Août 2005
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 154
    Points : 106
    Points
    106
    Par défaut
    j'ai utilisé cette fonction,

    mais le problème s'il existe plus d'un espace il le considère comme un caractère (du moins avec la façon dont j'ai codé)

    ex:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $recup2=explode(" ",$recup);
    Si la phrase est : Antoine est (double espace) champion olympique
    Il me retourne
    $recup2[0]=Antoine
    $recup2[1]=est
    $recup2[2]=
    $recup2[3]=champion
    $recup2[4]=olympique

    J'ai essayé avec la fonction trim, mais kenini

  4. #4
    Membre éprouvé Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Points : 1 009
    Points
    1 009
    Par défaut
    Soit tu appliques une fonction utilisateur à ton tableau pour faire un unset sur les valeurs "vides", soit (solution plus propre) tu supprimes tes espaces multiples par une regex.

  5. #5
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mais le problème s'il existe plus d'un espace il le considère comme un caractère (du moins avec la façon dont j'ai codé)
    Si tu connais à l'avance le nombre d'éléments à extraire, tu devrais essayer les expressions régulières

    http://www.php.net/manual/fr/ref.regex.php

    Edit: désolé de pourrir le topic, quelqu'un a répondu plus vite...

  6. #6
    Membre régulier Avatar de GarGamel55
    Profil pro
    Inscrit en
    Août 2005
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 154
    Points : 106
    Points
    106
    Par défaut
    Citation Envoyé par gorgonite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mais le problème s'il existe plus d'un espace il le considère comme un caractère (du moins avec la façon dont j'ai codé)
    Si tu connais à l'avance le nombre d'éléments à extraire, tu devrais essayer les expressions régulières

    http://www.php.net/manual/fr/ref.regex.php

    Edit: désolé de pourrir le topic, quelqu'un a répondu plus vite...
    non c'est aléatoire

  7. #7
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    Tu peux supprimer les doubles espaces de ta chaîne avant de la splitter


    [P.S.] Code non testé, il peut bugguer.

  8. #8
    Membre régulier Avatar de GarGamel55
    Profil pro
    Inscrit en
    Août 2005
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 154
    Points : 106
    Points
    106
    Par défaut
    j'ai fait encore plus bourrin mdr

    J'ai trouvé un source inspiré de phpBB

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $drop_char_match =   array('À','Á','Â','Ã','Ä','Å','à','á','â','ã','ä','å','Ò','Ó','Ô','Õ','Ö','Ø','ò','ó','ô','õ','ö','ø','È','É','Ê','Ë','è','é','ê','ë','Ç','ç','Ì','Í','Î','Ï','ì','í','î','ï','Ù','Ú','Û','Ü','ù','ú','û','ü','ÿ','Ñ','ñ','^', '$', '&', '(', ')', '<', '>', '`', '\'', '"', '|', ',', '@', '_', '?', '%', '-', '~', '+', '.', '[', ']', '{', '}', ':', '\\', '/', '=', '#', '\'', ';', '!'); 
    $drop_char_replace = array('A','A','A','A','A','A','a','a','a','a','a','a','O','O','O','O','O','O','o','o','o','o','o','o','E','E','E','E','e','e','e','e','C','c','I','I','I','I','i','i','i','i','U','U','U','U','u','u','u','u','y','N','n',' ', ' ', ' ', ' ', ' ', ' ', ' ', '',  '',   ' ', ' ', ' ', ' ', '',  ' ', ' ', '',  ' ',  ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' , ' ', ' ', ' ', ' ',  ' ', ' '); 
    $entry = ' ' . strip_tags(strtolower($entry)) . ' '; 
    $entry = preg_replace('/[\n\r]/is', ' ', $entry); 
    $entry = preg_replace('/\b&[a-z]+;\b/', ' ', $entry); 
    $entry = preg_replace('/\b[a-z0-9]+:\/\/[a-z0-9\.\-]+(\/[a-z0-9\?\.%_\-\+=&\/]+)?/', ' ', $entry); 
    for($i = 0; $i < count($drop_char_match); $i++) 
    { 
       $entry =  str_replace($drop_char_match[$i], $drop_char_replace[$i], $entry); 
    } 
    $entry = str_replace('*', ' ', $entry); 
    $entry = preg_replace('/[ ]([\S]{1,2}|[\S]{3})[ ]/',' ', $entry);
    $entry = preg_split("/[\s,]+/", $entry,-1, PREG_SPLIT_NO_EMPTY);
    @++

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

Discussions similaires

  1. récupération des données de la fonction imread
    Par Adem84 dans le forum Images
    Réponses: 12
    Dernier message: 08/02/2010, 12h33
  2. [CSV] fonction fgetcsv, récupération des éléments
    Par mcdelay dans le forum Langage
    Réponses: 5
    Dernier message: 29/02/2008, 11h36
  3. [MySQL] Utilisation des fonctions des récupérations des données
    Par Konrad Florczak dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 27/10/2006, 15h17
  4. [MySQL] Problème de récupération des données dans une fonction
    Par highman dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 26/10/2006, 20h04
  5. Réponses: 13
    Dernier message: 20/03/2003, 08h11

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