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. #21
    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 merci a toi serieusement :p
    Je suis désolé je m'était peut-etre pas bien exprimé :s
    Par contre juste un question, si je veux mettre ses données que j'ai récuperé dans un tableau je fait comment ?
    $Variables[1] ? (exemple)

  2. #22
    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
    Bon, en espérant que tu arriveras à t'en sortir avec ça :

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    function recupVariables( $chaine , $data ){
    	//création du masque de sélection des lignes à traiter	
    	if( is_array( $data ) ) $mask = '`^(' . implode( '|' , $data ) . ')`i';
    	else $mask = '`^(' . $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 ){
    		list( $var , $val ) = explode( ':' , $ligne );
    		if( !is_array( $data ) ) return trim( $val );
    		$out[ strtolower( trim( $var ) ) ] = trim( $val );
    	}
    	return $out;
    }
     
    function recupVaisseau( $chaine ){
    	//comme dans la fonction recupVariables, on transforme la chaine d'entrée en tableau	
    	$tabOriginal = explode( "\n" , $chaine );
    	//on sélectionne toutes les lignes contenant des parenthèses (à priori VAISSEAU( NOMBRE ) si j'ai bien capté)
    	$listeVaisseaux = preg_grep( '`\(`' , $tabOriginal );
    	$out = array();	
    	foreach( $listeVaisseaux as $key=>$val ){
    		//création d'un nouvel objet de données qui représentera le vaisseau		
    		$vaisseau = new stdClass();
     
    		// regex permettant de d'identifier le nom du vaisseau et le nombre	
    		preg_match( '`^(?P<nom>.+?)\s*\(\s*(?P<nombre>\d+?)\s*\)$`' , $val , $t );
    		$vaisseau->nom = trim( $t['nom'] );
    		$vaisseau->nombre = trim( $t['nombre'] );
    		$vaisseau->caracteristiques = array();		
    		$k = 0;
    		while( $tabOriginal[ $key + (++$k) ] != '' ){
    			if( strpos( $tabOriginal[ $key + $k ] , ':' ) == true ){
    				list( $var , $val ) = explode( ':' , $tabOriginal[ $key + $k ] );
    				$vaisseau->caracteristiques[ trim( $var ) ] = trim( $val );
    			}
    			else $vaisseau->caracteristiques[ trim( $tabOriginal[ $key + $k ] ) ] = 1;
    		}
    		$out[] = $vaisseau;
    	}
    	return $out;
    }
    et quelques exemples d'utilisation :

    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
     
    /*
    exemple d'utilisation de la fonction recupVariables en cherchant plusieurs lignes
    $txt contient ton rapport de combat.
    */
    $tabRecherches = array( 'technologie hyperespace' , 'satellite à ions' );
    $a = recupVariables( $txt , $tabRecherches );
     
    echo $a['satellite à ions'] . '<br /><br />';
     
    /*
    exemple d'utilisation de la fonction recupVariables avec une seule ligne 
    */
     
    $caserne = recupVariables( $txt , 'caserne militaire' );
    echo $caserne . '<br /><br />';
     
    /*
    exemple d'utilisation de la fonction recupVaisseau
    */
    $tab = recupVaisseau( $txt );
    foreach( $tab as $vaisseau ){
    	echo 'Nom : ' . $vaisseau->nom . '<br />';
    	echo 'Nombre : ' . $vaisseau->nombre . '<br />';
    	echo 'puissance d\'attaque du bousin : ' . $vaisseau->caracteristiques['Attaque'] . '<br />';
    }
    Amuse toi bien !

  3. #23
    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 et j'ajoute sa au code précedent ?

  4. #24
    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
    En fait je suis un peu perdu je modifie quoi mtn ?

  5. #25
    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
    Bon je quadruple post mais voila j'ai fini : c'est sa ? petit bidon peut tu tester car sa ne marche pas ..
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    <html>
    	<head><title>Simulateur de Combats Spatiaux</title></head>
    	<body>
    	<FONT FACE="tahoma">
    	<CENTER>
    		<form name="formulaire" method="post" action="Complexe.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/>
    		<input type="submit" name="valider" value="Envoyer"/>
    		</form>
    	</CENTER>
    	<FONT FACE="tahoma">
    	<?php
    	if(isset($_POST['valider'])){ 
     
    function recupVariables( $chaine , $data ){
    	//création du masque de sélection des lignes à traiter	
    	if( is_array( $data ) ) $mask = '`^(' . implode( '|' , $data ) . ')`i';
    	else $mask = '`^(' . $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 ){
    		list( $var , $val ) = explode( ':' , $ligne );
    		if( !is_array( $data ) ) return trim( $val );
    		$out[ strtolower( trim( $var ) ) ] = trim( $val );
    	}
    	return $out;
    }
    $tabRecherches = array( 'Tour de Combat' , 'Canon Laser' , 'Grand Canon Laser' , 'Rayon Tracteur' , 'Lanceur de Missiles' , 'Satellite à Ions' , 'Batterie Electromagnétique' , 'Canon à Plasma' , 'Canon Electromagnétique' ,  'Silos à Missiles HEM' , 'Complexe de Défense Orbital' , 'Missile d\'Interception Intelligent' , 'Technologie Amélioration de la Coque' , 'Technologie Amélioration de l\'Armement' , 'Technologie Bouclier de Protection' );
    $Défenses = recupVariables( $_POST['formulaire'] , $tabRecherches );
     
    echo $Défenses['Tour de Combat'] . '<br /><br />';
     
    function recupVaisseau( $chaine ){
    	//comme dans la fonction recupVariables, on transforme la chaine d'entrée en tableau	
    	$tabOriginal = explode( "\n" , $chaine );
    	//on sélectionne toutes les lignes contenant des parenthèses (à priori VAISSEAU( NOMBRE ) si j'ai bien capté)
    	$listeVaisseaux = preg_grep( '`\(`' , $tabOriginal );
    	$out = array();	
    	foreach( $listeVaisseaux as $key=>$val ){
    		//création d'un nouvel objet de données qui représentera le vaisseau		
    		$vaisseau = new stdClass();
     
    		// regex permettant de d'identifier le nom du vaisseau et le nombre	
    		preg_match( '`^(?P<nom>.+?)\s*\(\s*(?P<nombre>\d+?)\s*\)$`' , $val , $t );
    		$vaisseau->nom = trim( $t['nom'] );
    		$vaisseau->nombre = trim( $t['nombre'] );
    		$vaisseau->caracteristiques = array();		
    		$k = 0;
    		while( $tabOriginal[ $key + (++$k) ] != '' ){
    			if( strpos( $tabOriginal[ $key + $k ] , ':' ) == true ){
    				list( $var , $val ) = explode( ':' , $tabOriginal[ $key + $k ] );
    				$vaisseau->caracteristiques[ trim( $var ) ] = trim( $val );
    			}
    			else $vaisseau->caracteristiques[ trim( $tabOriginal[ $key + $k ] ) ] = 1;
    		}
    		$out[] = $vaisseau;
    	}
    	return $out;
    }
    		$tab = recupVaisseau( $_POST['formulaire'] );
    	foreach( $tab as $vaisseau ){
    		echo 'Nom : ' . $vaisseau->nom . '<br />';
    		echo 'Nombre : ' . $vaisseau->nombre . '<br />';
    		echo 'Attaque : ' . $vaisseau->caracteristiques['Attaque'] . '<br />';
    		echo 'Bouclier : ' . $vaisseau->caracteristiques['Bouclier'] . '<br/>';
    		echo 'Coque : ' . $vaisseau->caracteristiques['Coque'] . '<br/>';
    }
     
    }
    ?>

    Alors voila:
    2 soucis je recois plusieurs messages d'erreur:
    "Notice: Undefined index: Tour de Combat in C:\Program Files\wamp\www\test.php\Complexe.php on line 37"

    "Notice: Undefined index: nom in C:\Program Files\wamp\www\test.php\Complexe.php on line 51

    Notice: Undefined index: nombre in C:\Program Files\wamp\www\test.php\Complexe.php on line 52"

    "Notice: Undefined offset: 125 in C:\Program Files\wamp\www\test.php\Complexe.php on line 55"

  6. #26
    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 récupVariables renvoie un tableau dont les index sont toujours écrits en minuscules. Si tu préfères garder la casse originale, il suffit de retirer la fonction strtolower et les parenthèses correspondantes (ligne 30 dans le code que tu as reposté) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $out[ strtolower( trim( $var ) ) ] = trim( $val );
    devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $out[  trim( $var ) ] = trim( $val );
    Quant à la deuxième erreur, je vois pas trop. Les rapports que tu as posté étaient complets ? Dans le cas contraire, poste un rapport complet histoire de voir quels peuvent être les cas particuliers.

  7. #27
    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, cela fonctionne pour la tour de combat,
    mais il me reste ces 3 erreurs :
    Le rapport que je poste est celui au dessus:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Notice: Undefined index: nom in C:\Program Files\wamp\www\test.php\Complexe.php on line 51
     
    Notice: Undefined index: nombre in C:\Program Files\wamp\www\test.php\Complexe.php on line 52
     
    Notice: Undefined offset: 125 in C:\Program Files\wamp\www\test.php\Complexe.php on line 55

  8. #28
    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, je suis toujours avec le même soucis.

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