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 :

Récupérer des variables dans un texte collé


Sujet :

Langage PHP

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 92
    Points : 22
    Points
    22
    Par défaut Récupérer des variables dans un texte collé
    Bonsoir,
    Je rencontre actuellement un problème qui est le suivant:
    Récupérer certaines variables dans un texte collé.
    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <html>
    	<head><title>Simulateur de Combats Spatiaux</title></head>
    	<body>
    	<FONT FACE="tahoma">
    	<CENTER>
    		<form name="CaracDéfenseur" method="post" action="Simu.php"
    		<CENTER><FONT COLOR="RED" SIZE=+2><B><U>Défenseur</COLOR="RED"></FONT COLOR="RED" SIZE=+2></B></U><br/><br/></CENTER>
    		<FONT SIZE=+1><B><U>Collez ici votre Rapport d'Espionnage</FONT SIZE=+1></B></U><br/><br/>		
    		<textarea name="formulaire" id="CadreFormulaire" rows="10" cols="40">
    		</textarea><br/><br/>
    Pour la suite je ne voit pas comment faire. J'ai regardé sur le topic Analyser du texte mais je ne parvient pas a ce que je veux.
    Le texte serait un rapport d'espionnage dans un jeu d'ou je récupérerait certaines données dedans.
    Merci d'avance

  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
    Il faudrait nous presenter le texte que tu veux dissequer.

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 92
    Points : 22
    Points
    22
    Par défaut
    Ce type de texte.
    Je voudrais récuperer les données en rouge et en gras:
    Ici n'aparaissent aucune défenses et aucun vaisseaux. Mais il y'en aurait forcément si l'utilisateur utilise mon code php j'en met au hasard pour montrer.
    Je comprend la complexité de ce que je demande Voir même impossible. Je ne compte pas y arriver en 30 min .
    De plus que le nombre de vaisseaux varie selon le rapport d'espionnage :o ainsi que les défenses :s Je veux dire sur un rapport il peut y avoir 2 types de vaisseaux en plus :'(
    Par eexemple:
    Satellite a Ions en plus sur un autre espionnage etc. :s merci

    Tour de Combat: 1.070
    Canon Laser: 39
    Grand Canon Laser: 23
    Rayon Tracteur: 3
    Lanceur de Missiles: 3
    Satellite à Ions: 5
    Batterie Electromagnétique: 3
    Canon à Plasma: 3
    Canon Electromagnétique: 3
    Silos à Missiles HEM: 3




    - Ressources
    Fer: 102.400.000
    Or: 51.200.000
    Cristal: 40.831.800
    Hydrogène: 32.030.300

    - Vaisseaux
    Diviseur ( 200 )
    Attaque : 50
    Bouclier : 50
    Coque : 144
    Vitesse : 5


    - Défenses
    Tour de Combat: 1.070
    Canon Laser: 39
    Grand Canon Laser: 23
    Rayon Tracteur: 3
    Lanceur de Missiles: 3
    Batterie Electromagnétique: 3
    Canon à Plasma: 3
    Canon Electromagnétique: 3
    Silos à Missiles HEM: 3


    - Bombe
    Bombe Electromagnétique: 1.147

    - Militaires
    Soldats: 0
    Colonels: 1
    Techniciens: 812.890
    Experts: 0
    Espions: 1
    Kamikazes: 1

    - Bâtiments Ressources
    Centrale Thermique: 21
    Réacteur Thermonucléaire: 6
    Centrale Hydraulique: 12
    Centrale à énergie solaire: 8
    Mine de Fer: 20
    Mine d'Or: 21
    Mine de Cristal: 20
    Extracteur d’Hydrogène: 20
    Centre d'extraction de Fer: 9
    Centre d'extraction de l'Or: 8
    Centre d'extraction du Cristal: 4
    Extracteur d’Hydrogène Amélioré: 4
    Entrepôt de Fer: 11
    Entrepôt d'Or: 10
    Entrepôt de Cristal: 10
    Silo à Hydrogène: 10
    Bunker: 0
    Chantier de Terraformation: 3

    - Bâtiments Militaires
    Caserne Militaire: 14
    Chantier Spatial: 12
    Centre de Défense: 13
    Plate-forme Spatiale: 1
    Complexe Militaire: 10

    - Bâtiments Scientifiques
    Usine Robotique: 11
    Département de Contrôle Psychique: 4
    Laboratoire Scientifique: 7
    Zone 51: 10

    - Laboratoire
    Technologie Salle de Contrôle: 12
    Technologie Maîtrise de l'énergie: 13
    Technologie Infrastructure des vaisseaux: 14
    Technologie Réacteurs à Combustion: 11
    Technologie Espionnage: 14
    Technologie Contre-Espionnage: 12
    Technologie Amélioration de la Coque: 15
    Technologie Camouflages: 7
    Technologie Capteurs Intrastellaires: 11
    Technologie Amélioration de l'Armement: 15

    - Zone 51
    Technologie Maîtrise de l'Hydrogène: 12
    Technologie Maîtrise du Laser: 10
    Technologie Maîtrise des Ions: 10
    Technologie Maîtrise du Plasma: 8
    Technologie Réacteurs SubLuminiques: 8
    Technologie Antimatière: 6
    Technologie Hyperespace: 5
    Technologie Capteurs Interstellaires: 12
    Technologie Bouclier de Protection: 14
    Savoir des Grands Sages: 12
    Génie Génétique: 11
    Nanotechnologie: 8

  4. #4
    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
    Le sujet "Analyser du texte" ressemble quand meme fortement à ce que tu veux donc inspire t'en et si tu as des points blocant on pourra t'aider a partir de ce point.

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 92
    Points : 22
    Points
    22
    Par défaut
    Salut,
    Voila sur quoi je bloque.
    Dans "analyser du texte" on découpe les parties grace au : "_________"
    Mais pour le mien je peut faire comment ?
    Il me semble que c'est se code pour analyser du texte:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pattern1 = "#[a-z0-9 \s:é.,/\[\]\(\)'%+-]*[_\s ]*#i";

  6. #6
    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
    En fait ton cas est vraiment plus simple : il suffit que tu lises le texte ligne par ligne : toutes les lignes quine commencent pas par un tiret sont des données ; ces lignes il suffit de les couper en deux au ":" et tu obtiens a gauche le nom de la donnée, a droite sa valeur.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Points : 822
    Points
    822
    Par défaut
    Pour être précis, quel est le but ? Récupérer les valeurs de telle ou telle ligne sous forme de variable ou décorer ces lignes ?
    Tu connais exactement les lignes à récupérer (genre "Satellite à Ions" est l'orthographe exacte du truc ?)

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 92
    Points : 22
    Points
    22
    Par défaut
    Trés bien, je m'explique !
    Je ne souhaite pas ressortir ce texte coloré ou autrement.
    Je souhaite juste récuperer des variables du type satellites à Ions et le nombre qu'il y a aprés pour aprés pouvoir en faire ce que je veux c'est a dire faire des calculs avec.

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Points : 822
    Points
    822
    Par défaut
    Amusant à faire

    Une solution :

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    function machin( $chaine , $data ){
    	//création du masque de sélection des lignes à traiter	
    	$mask = '`^(' . implode( '|' , $data ) . ')`i';
    	// on transforme la chaine d'entrée en tableau
    	$tabOriginal = explode( "\n" , $chaine );
    	// sélection des lignes intéressantes du tableau 	
    	$tab = preg_grep( $mask , $tabOriginal );
    	$out = array();	
    	foreach( $tab as $ligne ){
    		// regex permettant de séparer le libellé de la valeur (surement pas optimale, je suis une quiche en regex) fonctionne pour libelle:valeur et libelle(valeur)		
    		preg_match( '`(?P<var>.*)[:|\(]\s*(?P<val>\d+(\.\d+)*)+?\s*\)?`' , $ligne , $t );
    		$out[ trim( $t['var'] ) ] = $t['val'];
    	}
    	return $out;
    }
     
    $txt = <<<DATA
    La pâte à crèpes
     
    farine : 250
    oeufs : 4
    lait : 0.50
    sel : 1
    beurre( 0.050 )
    sucre vanillé : 1
    rhum : 5
    DATA;
     
    // définition des informations recherchées
    $tabRecherches = array( 'farine' , 'LAIT' , 'beurre' , 'sucre vanillé' );
     
    $a = machin( $txt , $tabRecherches );
     
    print_r( $a );
    T'as plus qu'à y passer tes variables et tes recherches

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 92
    Points : 22
    Points
    22
    Par défaut
    Simpa
    Ta pas chomé !
    Je veux bien mais ne voulant pas juste faire le code j'aimerai aussi comprendre un minimum =D donc si tu pouvais juste un peu m'expliquer je serait ravis.
    Merci d'avance et merci encore petitbidon.
    Oups j'avais pas vu les commentaires. N'empèche que je comprend pas tout :s

    1ere Question. Qu'est ce qu'il faut que je touche et qu'est ce qu'il faut pas que je touche .?
    Quelles variable à tu mis au hasard?

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Points : 822
    Points
    822
    Par défaut
    La fonction machin à priori t'as pas à y toucher (hormis pour lui mettre un nom un peu plus parlant)

    Y'a juste le texte que tu envoie à la fonction (le texte avec les canons à ions), et le tableau donnant la liste des variables que tu cherches à récupérer dans ce texte.

    Plus précisément tu devrais te retrouver avec un truc du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $recherches  = array( 'satellite à ions' , 'laser bidule' ..... );
    $variables = machin( $_POST['formulaire'] , $recherches );

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 92
    Points : 22
    Points
    22
    Par défaut
    Ok,
    Mais pour sa:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $txt = <<<DATA
    La pâte à crèpes
     
    farine : 250
    oeufs : 4
    lait : 0.50
    sel : 1
    beurre( 0.050 )
    sucre vanillé : 1
    rhum : 5
    DATA;
    J'ai pas compris ?
    Mais en fait, je sais pas si tu l'a pris en compte aussi enfin je crois mais pour les chiffes : ce qui suit "laser bidule" il passe ou ?

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Points : 822
    Points
    822
    Par défaut
    c'est juste une chaine bidon pour tester la fonction et délimitée par <<<DATA ... DATA; à la place de guillemets. Cela s'appelle syntaxe heredoc. C'est plus pratique pour délimiter des chaines sans se poser de questions à propos des guillemets ou apostrophes qu'elles pourraient contenir.

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 92
    Points : 22
    Points
    22
    Par défaut
    donc moi, je ne m'en servirai pas mais je laisse les <<<DATA et DATA ? en changement la variable $txt ?

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 92
    Points : 22
    Points
    22
    Par défaut
    Waouh magique sa marche il me semble, enfin quand je valide j'obtient ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Array ( [Tour de Combat] => 1.070 [Canon Laser] => 39 [Grand Canon Laser] => 23 [Rayon Tracteur] => 3 [Lanceur de Missiles] => 3 [Batterie Electromagnétique] => 3 [Canon à Plasma] => 3 [Canon Electromagnétique] => 3 [Silos à Missiles HEM] => 3 )
    Ensuite pour pouvoir prendre compte des vaisseaux et des technologies en gras et rouge il faut que je répète l'opération ??
    Mais, vu que je n'ai pas tout a fait compris l'opération ni toutes les variables je ne voit pas comment faire :s

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 92
    Points : 22
    Points
    22
    Par défaut
    Bonjour,
    Petit Bidon s'il te plait comment puis-je procéder pour retrouver les valeurs des vaisseaux ?

  17. #17
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Points : 822
    Points
    822
    Par défaut
    Bah comme tu récupères le reste. Dans l'array de recherche tu met 'diviseur' , 'bouclier' etc... Idem pour les technologies.

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 92
    Points : 22
    Points
    22
    Par défaut
    Ok, mais coomment je fait pour récuperer le nom? ce qui est au dessus de attaque et qui varie selon le rapport :s
    c'est pas fixe a tout les rapports.

    Regarde si je te donne sa :
    - Ressources
    Fer: 19.809.400
    Or: 716.358
    Cristal: 3.281.160
    Hydrogène: 7.538.910

    - Vaisseaux

    EXPLORER H ( 10 )
    Attaque : 3.000
    Bouclier : 1.220
    Coque : 3.250
    Vitesse : 170
    Hyperespace

    TERATOS F ( 25 )
    Attaque : 300.000
    Bouclier : 150.100
    Coque : 100.080
    Vitesse : 170
    Furtivité : 1
    Hyperespace

    KRATOS F ( 7 )
    Attaque : 150.000
    Bouclier : 61.000
    Coque : 100.050
    Vitesse : 170
    Furtivité : 1
    Hyperespace

    KIROS ( 5 )
    Attaque : 1.250.000
    Bouclier : 630.000
    Coque : 720.000
    Vitesse : 200
    Furtivité : 1

    HORIZON ( 2 )
    Attaque : 5.000.000
    Bouclier : 1.260.000
    Coque : 1.440.000
    Vitesse : 170
    Furtivité : 1
    Hyperespace

    - Défenses
    Tour de Combat: 10
    Canon Laser: 1.000
    Grand Canon Laser: 10
    Rayon Tracteur: 30
    Lanceur de Missiles: 5
    Satellite à Ions: 30
    Batterie Electromagnétique: 30
    Canon à Plasma: 30
    Silos à Missiles HEM: 856

    - Bombe
    Bombe Electromagnétique: 1.000

    - Militaires
    Soldats: 143.970
    Colonels: 2.254
    Techniciens: 1.811.740
    Experts: 6.823
    Espions: 221
    Kamikazes: 31.858
    Androïde de Combat: 45

    - Bâtiments Ressources
    Centrale Thermique: 2
    Réacteur Thermonucléaire: 2
    Centrale Hydraulique: 10
    Centrale à énergie solaire: 18
    Mine de Fer: 18
    Mine d'Or: 20
    Mine de Cristal: 20
    Extracteur d’Hydrogène: 20
    Centre d'extraction de Fer: 7
    Centre d'extraction de l'Or: 2
    Centre d'extraction du Cristal: 1
    Extracteur d’Hydrogène Amélioré: 5
    Entrepôt de Fer: 11
    Entrepôt d'Or: 10
    Entrepôt de Cristal: 9
    Silo à Hydrogène: 10
    Chantier de Terraformation: 3

    - Bâtiments Militaires
    Caserne Militaire: 6
    Chantier Spatial: 14
    Centre de Défense: 12
    Plate-forme Spatiale: 1
    Complexe Militaire: 10

    - Bâtiments Scientifiques
    Usine Robotique: 12
    Département de Contrôle Psychique: 3
    Laboratoire Scientifique: 7
    Zone 51: 10

    - Laboratoire
    Technologie Salle de Contrôle: 12
    Technologie Maîtrise de l'énergie: 12
    Technologie Infrastructure des vaisseaux: 14
    Technologie Réacteurs à Combustion: 5
    Technologie Espionnage: 11
    Technologie Contre-Espionnage: 9
    Technologie Amélioration de la Coque: 12
    Technologie Camouflages: 5
    Technologie Capteurs Intrastellaires: 10
    Technologie Amélioration de l'Armement: 10

    - Zone 51
    Technologie Maîtrise de l'Hydrogène: 10
    Technologie Maîtrise du Laser: 10
    Technologie Maîtrise des Ions: 8
    Technologie Maîtrise du Plasma: 7
    Technologie Réacteurs SubLuminiques: 5
    Technologie Antimatière: 6
    Technologie Hyperespace: 5
    Technologie Capteurs Interstellaires: 10
    Technologie Bouclier de Protection: 13
    Savoir des Grands Sages: 11
    Génie Génétique: 10

    Avec tout les vaisseaux qu'il y a mon script en récupère que 1 celui juste au dessus des défenses :s

  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 92
    Points : 22
    Points
    22
    Par défaut
    Donc j'ai tout bon, mon seul soucis c'est que :
    Le Script ne récupère qu'un vaisseaux même si il y en a plusieurs.
    Le Script ne récupère pas les noms des vaisseaux.

  20. #20
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Points : 822
    Points
    822
    Par défaut
    Ooooh mais tu fais évoluer le bousin au fur à mesure !

    En effet là la fonction n'est plus tout à fait adaptée...

    J'essaye de te revoir ça dans l'aprem, c'est amusant à faire

Discussions similaires

  1. Récupérer des variables dans un fichier
    Par Invité dans le forum Shell et commandes GNU
    Réponses: 8
    Dernier message: 05/06/2014, 00h17
  2. récupérer des variables dans un formulaire. JSP
    Par galia dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 13/09/2012, 10h06
  3. Récupérer des variables dans JTextField
    Par Loic67 dans le forum Composants
    Réponses: 2
    Dernier message: 13/06/2012, 11h06
  4. [MySQL] Récupérer des variables dans un formulaire
    Par rico the hobbit dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 10/04/2010, 11h04
  5. [Regex] Récupérer des Variables dans une phrase.
    Par Jimmy_S dans le forum Windows Forms
    Réponses: 3
    Dernier message: 28/05/2008, 20h50

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