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 confirmé Avatar de GarGamel55
    Profil pro
    Inscrit en
    Août 2005
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 154
    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 chevronné Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    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 confirmé Avatar de GarGamel55
    Profil pro
    Inscrit en
    Août 2005
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 154
    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 émérite Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    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
    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...
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

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

    Informations forums :
    Inscription : Août 2005
    Messages : 154
    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
    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 confirmé Avatar de GarGamel55
    Profil pro
    Inscrit en
    Août 2005
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 154
    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