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)
Version imprimable
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)
Bon, en espérant que tu arriveras à t'en sortir avec ça :
et quelques exemples d'utilisation :Code:
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; }
Amuse toi bien ! ;)Code:
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 />'; }
Ok et j'ajoute sa au code précedent ? :P
En fait je suis un peu perdu je modifie quoi mtn ? :)
Bon je quadruple post mais voila j'ai fini : c'est sa ? petit bidon peut tu tester car sa ne marche pas ..
Code:
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"
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é) :
devientCode:$out[ strtolower( 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.Code:$out[ trim( $var ) ] = trim( $val );
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:
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
Bonjour, je suis toujours avec le même soucis.