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 :

Analyser du texte


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 70
    Points : 19
    Points
    19
    Par défaut Analyser du texte
    Bonjour à tous, je me suis renseigné pour créer un script qui met en forme un rapport de combat d'un jeu en ligne.

    Il faut simplement, copier le rapport du jeu et le collé dans une zone de texte, envoyé, et le script PHP converti tout en rajoutant des balises pour le bbcode, et que cette personne peut poster son rapport de combat sur le forum.

    On m'a parler de "parser" mais je n'ai jamais utiliser ceci (j'espère posté dans la bonne partie ) je vient donc pour demander des renseignement, savoir comment l'ont fait.

    Le texte arrive dans cette façon la :

    Votre attaque sur pipondiogoye
    07/07 - Expéditeur: Etat Major [Supprimer]

    COMPTE RENDU DU COMBAT CONTRE pipondiogoye

    Vainqueur sur le front terrestre

    Vainqueur sur le front blindé



    Vous remportez le combat en gagnant sur 2 front(s) contre 0 pour l'attaque
    Vous volez 96 de fuel, 52 de kevlar, et 0 de nucléaire.
    ________________________________
    TACTIQUES
    Front terrestre: Aucune tactique

    Front blindé: Aucune tactique

    Front naval: Aucune tactique

    Front aérien: Aucune tactique

    ________________________________
    CARACTERISTIQUES DE L'ATTAQUE
    - Terrestre Blindé Naval Aérien
    Force 508 1405 0 0
    furtivité 4499 - - -

    Bonus sur les terrestre : Furtivite(gymnase) +10/100 et Force(stand de tir) +15/100
    10 médecins: -2% de pertes sur les troupes
    ________________________________
    CARACTERISTIQUES DE LA DEFENSE
    - Terrestre Blindé Naval Aérien
    Force 0 0 0 0
    Furtivité 3 - - -

    Bonus sur les terrestre : Furtivite(gymnase) +10/100 et Force(stand de tir) +0/100
    Bonus sur les blindés : Force(avant-poste) +0/100

    L'attaquant obtiens un gain de force de 5% (furtivité supérieur a la défense)
    ________________________________

    d'ou les trait sont des balise <hr>
    Merci à vous

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Donne nous un exemple du texte finale que tu veux produire.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 70
    Points : 19
    Points
    19
    Par défaut
    Bonjour, le texte final serait celui-ci :


    Votre attaque sur pipondiogoye
    07/07 - Expéditeur: Etat Major [Supprimer]

    COMPTE RENDU DU COMBAT CONTRE pipondiogoye

    Vainqueur sur le front terrestre

    Vainqueur sur le front blindé




    Vous remportez le combat en gagnant sur 2 front(s) contre 0 pour l'attaque
    Vous volez 96 de fuel, 52 de kevlar, et 0 de nucléaire.

    ________________________________
    TACTIQUES
    Front terrestre: Aucune tactique

    Front blindé: Aucune tactique

    Front naval: Aucune tactique

    Front aérien: Aucune tactique

    ________________________________
    CARACTERISTIQUES DE L'ATTAQUE
    - Terrestre Blindé Naval Aérien
    Force 508 1405 0 0
    furtivité 4499 - - -


    Bonus sur les terrestre : Furtivite(gymnase) +10/100 et Force(stand de tir) +15/100
    10 médecins: -2% de pertes sur les troupes
    ________________________________
    CARACTERISTIQUES DE LA DEFENSE
    - Terrestre Blindé Naval Aérien
    Force 0 0 0 0
    Furtivité 3 - - -


    Bonus sur les terrestre : Furtivite(gymnase) +10/100 et Force(stand de tir) +0/100
    Bonus sur les blindés : Force(avant-poste) +0/100

    L'attaquant obtiens un gain de force de 5% (furtivité supérieur a la défense)
    ________________________________
    Voilà !
    D'ou le texte serait centrer.
    Après, se serait pas mal que l'utilisateur puissent changer la couleur etc... voir même mettre des images ... mais sa je pense être capable de le faire une fois après avoir eu le code pour parser tout sa.

    Merci

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    montre nous ce que tu as déjà essayé

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 70
    Points : 19
    Points
    19
    Par défaut
    salut, je ne sait pas faire ceci, alors la seule chose que j'ai faite c'est donc le formulaire pour poster le rapport

  6. #6
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    Citation Envoyé par yooyoo Voir le message
    salut, je ne sait pas faire ceci, alors la seule chose que j'ai faite c'est donc le formulaire pour poster le rapport
    montre nous déjà le code pour ça
    à partir de là on pourra t'aider étape par étape

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 70
    Points : 19
    Points
    19
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <form method="post" action="">
       <p>
           <label for="formulaire">Collez ici le rapport de combat</label><br />
           <textarea name="formulaire" id="CadreFormulaire" rows="10" cols="50">
           </textarea>   
       </p>
    </form>
    Voilà pour le formulaire !

  8. #8
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    d'abord il faudrait que tu récupères le texte collé donc pour ça regarde ces articles :
    http://php.developpez.com/cours/?pag...ge#formulaires

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 70
    Points : 19
    Points
    19
    Par défaut
    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
     
    <form method="post" action="">
       <p>
           <label for="formulaire">Collez ici le rapport de combat</label><br />
           <textarea name="formulaire" id="formualire" rows="10" cols="50">
           </textarea>   
       </p>
    </form>
    <br />
    <input type="submit" value="Envoyer" /><br />
     
    <?php
    $rapport = $_POST['formulaire']
     // et ici mettre le code pour modifier
    ?>
    l'action serait donc la page de la ou le texte est transformé.

  10. #10
    Membre éclairé
    Avatar de bricecol
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 364
    Points : 654
    Points
    654
    Par défaut
    c'est assez lourd car la sortie du jeu ne suit aucun formalisme standard. vous auriez pu générer du XML très facilement et ton parseur, tu l'aurais fais ultra simplement...

    on peut t'aider bien sûr mais c'est vraiment lourd à faire. je ne sais pas pour les autres mais moi je n'ai pas le temps de t'écrire une telle fonction. ce que je peux te dire c'est qu'il faudra que tu utilises des expressions régulières. tu vas devoir extraire tout ce qui représente une "partie de document", que tu isoles les parties, que tu les formates puis il faut le ré-assembler. c'est ce que je ferais personnellement. j'utiliserais des classes pour les types de textes (selon couleurs) => voir interfaces.

    enfin, dans cet état, ya de quoi faire et ce n'est vraiment, mais alors vraiment pas générique. regarde si les créateurs du jeu ne peuvent pas changer les sorties en XML.
    "Computers are like Old Testament gods ; Lots of rules and no mercy"
    [ Les ordinateurs sont comme les dieux de l’Ancien testament ; Beaucoup de règles et aucune pitié. ] Joseph Campbell

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 70
    Points : 19
    Points
    19
    Par défaut
    salut.,
    changer la sortie en XML ?

    c'est a dire ? sa sortirais comment le rapport ?

    je vais en parler au administrateur du jeu, je ne sait pas si ils seront d'accord de faire sa seulement pour moi, pour que je puisse faire ce script de mise en forme.

    si ils ne veulent pas, je serait obligé de faire a la première façon dite.

  12. #12
    Membre éclairé
    Avatar de bricecol
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 364
    Points : 654
    Points
    654
    Par défaut
    c'est un bon argument a avancer. une sortie sous forme XML est formalisée,
    cela signifie que n'importe qui pourra faire n'importe quel script de traitement
    de la sortie selon ses besoins. on peut tout imaginer ici. ca ne devrait pas non plus leur poser problème.
    c'est très simple de modifier une sortie texte en sortie XML...
    "Computers are like Old Testament gods ; Lots of rules and no mercy"
    [ Les ordinateurs sont comme les dieux de l’Ancien testament ; Beaucoup de règles et aucune pitié. ] Joseph Campbell

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 70
    Points : 19
    Points
    19
    Par défaut
    me re-voilà, les administrateurs ayant trop de boulot n'ont pas le temps de faire la sorti en XML ...

    je serait donc obligé de faire la façon la plus compliqué.

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2008
    Messages : 46
    Points : 41
    Points
    41
    Par défaut
    Salut,

    Si tu souhaite analyser du texte brut tu doit d'abord identifier des repères qui vont te permettre d'encadrer le texte à traiter (balise, retour chariot,...).

    Une fois que tu sais comment encadrer le texte que tu souhaites modifier tu peux soit faire au cas par cas avec un simple "str_replace" soit utiliser des expressions régulières pour être plus complet avec "preg_match" ou "preg_match_all"

  15. #15
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    Tiens , on se connait je crois

    L'idée de la sortie Xml est vachement bien, si les admins prennent le temps de la faire ça peut être un énorme plus.

    Bon pour ce qui est de ton parseur voila comment je procèderais :

    1- Je découpe le tout en nombres de parties requises (séparées par "_____")
    2- Je traite chaque parties (on y reviendra)

    Il faut aussi savoir une chose : suivant le navigateur utilisé par le visiteur, les retours chariots/tabulations peuvent différer, ça peut jouer quand à la manière dont tu vas traiter chaque parties.

    Pour le 1 le motif suivant devrait fonctionner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "#[a-z0-9 \s:é.,/\[\]\(\)'%+-]*[_\s ]*#i"
    Ce qui donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $pattern1 = "#[a-z0-9 \s:é.,/\[\]\(\)'%+-]*[_\s ]*#i";
    $results=array();
    preg_match_all($pattern1,$content,$results);
     
    echo $results[0][0]; //Partie 1
    echo $results[0][2];// Partie 2
    echo $results[0][3]; //Partie 3
    echo $results[0][4]; //Partie 4
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 70
    Points : 19
    Points
    19
    Par défaut
    oui il me semble déjà vous avoir vu quelque part.

    Merci pour ce début, vous expliquez bien pas à pas je comprend bien


    EDIT :

    Il y à eu une mise a jour, et ils ont modifier le rapport :





    COMPTE RENDU DU COMBAT CONTRE *********

    Vous remportez le combat en gagnant sur * front(s) contre * pour l'attaque
    Vous volez ** de fuel, ** de kevlar, et ** de nucléaire.
    Prime finale de: ** Or.

    ________________________________
    attaque front defense
    ** Terrestre **
    effectif
    -5/100 Aucune tactique
    prime: ***
    * Blindé ***

    prime: *
    * Naval *

    prime: *
    * air *

    prime: *


    L'attaquant obtiens un gain de force de *% (furtivité supérieur a la défense)
    ________________________________
    Sont inclus dans les forces
    Bonus sur les terrestre : Furtivite(gymnase) +10/100 et Force(stand de tir) +0/100
    ** médecins: -4% de pertes sur les troupes
    ________________________________

  17. #17
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    ça ne change rien au code précèdent , il y'a juste des parties a prendre en plus :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    echo $results[0][0]; //Partie 1
    echo $results[0][1];// Partie 2
    echo $results[0][2]; //Partie 3
    echo $results[0][3]; //Partie 4
     
    echo $results[0][4]; //etc
    echo $results[0][5]; //etc

    suffit de faire un pour s'en rendre compte
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 70
    Points : 19
    Points
    19
    Par défaut
    ok merci RideKick.
    et maintenant, après ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $pattern1 = "#[a-z0-9 \s:é.,/\[\]\(\)'%+-]*[_\s ]*#i";
    $results=array();
    preg_match_all($pattern1,$content,$results);
     
    echo $results[0][0]; //Partie 1
    echo $results[0][2]; //Partie 2
    echo $results[0][3]; //Partie 3
    echo $results[0][4]; //Partie 4
    echo $results[0][5]; //Partie 5
    comment je fait ?

  19. #19
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    Il va falloir traiter chaques parties independamment, en remplaçant chaques texte a colorer par ledit texte entre balise de couleurs. C'est pas la partie la plus compliquée, tu peux deja commencer par la .
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  20. #20
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 70
    Points : 19
    Points
    19
    Par défaut
    salut, alors la je suis un peu bloqué :s je trouve pas trop comment faire, j'ai vu ceci (sur un autre jeu) :

    http://ikariamlibrary.com/tools/libr.../parsetext.png

    sa se présente comme ceci apparemment ? Mais je ne sait comment faire.

Discussions similaires

  1. [RegEx] Analyser du texte non XML
    Par CyrilleB dans le forum Langage
    Réponses: 1
    Dernier message: 09/08/2010, 23h55
  2. Analyse de texte sur le site DELL
    Par VooDooNet dans le forum Langage
    Réponses: 3
    Dernier message: 04/01/2010, 17h08
  3. Analyser un texte
    Par fredu dans le forum Langage
    Réponses: 6
    Dernier message: 29/03/2009, 06h02
  4. Analyse du texte de puis outlook
    Par ilcocodrillo dans le forum VBA Word
    Réponses: 0
    Dernier message: 09/11/2007, 15h02
  5. [RegEx] Analyser un texte
    Par knoll dans le forum Langage
    Réponses: 4
    Dernier message: 21/03/2007, 16h47

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