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

PHP & Base de données Discussion :

COMMENT inserer dans mysql un texte PHRASE par phrase, en prennant en compte les .?! [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 39
    Points : 31
    Points
    31
    Par défaut COMMENT inserer dans mysql un texte PHRASE par phrase, en prennant en compte les .?!
    bonjours
    j'ai un site de littérature
    et je souhaite prendre des textes complets

    $textecomplet = "je suis heureux. Je vais a la plage ! C'est chouette ?";


    et les découper afin d'insérer dans mysql des phrases, en utilisant donc la ponctuation .!? comme délimiteur

    comment faire ?

  2. #2
    Membre confirmé Avatar de alexp
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    459
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 459
    Points : 532
    Points
    532
    Par défaut
    la fonction explode de php devrait te satisfaire. Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $textecomplet = "je suis heureux. Je vais a la plage ! C'est chouette ?";
    $text_array = explode("!", $textecomplet);
    echo $text_array[0]; //affiche la premiere phrase
    echo $text_array[1];
    etc...

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 97
    Points : 114
    Points
    114
    Par défaut
    explode() ne gere que 1 charactere a la fois, donc autant dire que tu vas t'amuser si tu veux faire !?.

    Je te suggeres plutot d'utiliser preg_split qui est bien plus souple. Au lieu de explode dans l'exemple de alexp utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $text_array = preg_split("[!?\.]/", $textecomplet) ;
    L'avantage etant que tu peux rajouter encore d'autres delimiteurs si tu le souhaites.

    Il y a juste un inconvénient majeur avec ces 2 solutions. C'est que tu perds toute la ponctuation. Les ! ? et . disparaissent.

    Il y a une solution simple a cela, mais la je dois vraimment aller faire dodo alors j'essaierai de l'expliquer demain. Bonne nuit.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 97
    Points : 114
    Points
    114
    Par défaut
    Voila j'ai refait un exemple plus complet en 4 etapes

    1. Enlever tous les passages a la lignes (ils ne sont plus significatifs)
    2. Remplacer !?. par eux-meme suivi d'un passage a la ligne. C'est une astuce car aux lieux d'exploser la ligne sur ces caracteres je l'exploserai sur le passage a la ligne, permettant de conserver la ponctuation.
    3. Exploser la chaine, la transformer en un tableau, sur base des passage a la ligne.
    4. Enlever les caracteres d'espace vide devant et deriere chaque chaine
    5. Enlever le dernier element du tableau s'il est vide !


    Voici le code
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    $ligne = "Salut ! Les gars comment ca vas ? Il va falloir en mettre un coup. Debout les gars reveillez vous, on va \n
     au bout du monde !";
     
    //Nettoyage de la chaine
     
    //  a) Enlever tout les sauts a la ligne
    $ligne = str_replace("\n", "", $ligne) ; 
     
    // b) remplacer les .!? par la meme chose avec un passage a la ligne
    $ligne = preg_replace("/([!?\.])/", "\${1}\n",$ligne) ; 
     
    // c) Diviser le texte sur base de ses sauts de lignes
    $ligne = explode("\n", $ligne) ; 
     
    // d) Enlever les blancs devant et deriere chaque ligne
    $nb = count($ligne) ;
    for ($i=0; $i<$nb; $i++) $ligne[$i] = trim($ligne[$i]) ;
     
    // e) Enlever le dernier element du tableau s'il est vide, car si le texte se termine
    //     par un .!? alors il y aura un element vide a la fin
    if (empty($ligne[$nb-1])) array_pop($ligne) ;
     
    // Affiche le contenu du tableau
    print_r($ligne) ;

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 39
    Points : 31
    Points
    31
    Par défaut ouah
    Merci beaucoup andr386 pour ton aide
    c'est de loin la meilleur réponse que je reçois sur un forum d'entraide en 7 ans de cyber existence
    Le code est parfait, parfaitement commenté et ajoute des solution auquel je n'avais pas pensé.
    Encore merci beaucoup à toi.

    J'ai juste par rapport a ce code un légers problème car je ne sais pas comment insérer des données dans mysql à partir d'un array

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 97
    Points : 114
    Points
    114
    Par défaut
    Pour ca tu dois parcourir le tableau element par element avec un indice que tu incrementes jusqu'au nombre d'elements du tableau ou bien en utilisant foreach. Ensuite tu cree ta requete SQL et tu l'inseres.

    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    foreach ($ligne as $element)
    {
       $query = "INSERT INTO table_texte (texte) VALUES  ('".addslashes($element)."')" ;
     
       // ici le code qui execute la query
    }

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 39
    Points : 31
    Points
    31
    Par défaut
    merci beaucoup
    je vais essayer toute tes solutions
    et je reposterais les bugs si je n'y arrive pas
    je met en tout cas le sujet en resolut
    et je te remercie puissance 40000 pour ton aide !

    Amicalement
    laurent

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 97
    Points : 114
    Points
    114
    Par défaut
    Je t'en prie, ca fait plaisir quand les explications sont
    appreciees et lues/comprises.

    Avec tes remerciements puissance 4000 j'ai une stack overflow dans mon ego

    Faut arreter

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 39
    Points : 31
    Points
    31
    Par défaut
    Stack peut désigner :

    * un stack, un modelé littoral se présentant sous la forme d'un pilier de pierre ;
    * le nom en anglais d'une pile en informatique.


    j'opte pour la réponse 2


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

Discussions similaires

  1. Comment inserer dans mysql un champ date multi-valeurs
    Par pat84000 dans le forum Requêtes
    Réponses: 3
    Dernier message: 29/07/2010, 14h15
  2. Comment lire un fichier texte phrase par phrase
    Par Mom's dans le forum Général Python
    Réponses: 13
    Dernier message: 12/02/2007, 15h48
  3. Réponses: 32
    Dernier message: 17/05/2006, 16h03
  4. [Delphi] Comment écrire dans un fichier texte ?
    Par Mickey.jet dans le forum Débuter
    Réponses: 2
    Dernier message: 01/04/2006, 14h00
  5. Réponses: 7
    Dernier message: 23/03/2005, 22h23

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