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 :

Recherche de variables dans un texte


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 Recherche de variables dans un texte
    Bonjour,
    Je cherche a récuperer des variables dans un texte que je colle dans mon textearea.
    Voici mon code bien basique mais j'ai un soucis
    Je rentre ce texte:

    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

    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
    	<head><title>Simulateur de Combats Spatiaux</title>
    	<link rel="stylesheet" media="screen" type="text/css" title="design3" href="Css2.css" />
    	</head>
    	<body>
    		<table>
    		<tr>
    		<td>
    		<form name="formulaire" method="post" action="testons.php">
    		<p>Défenseur <br/>
    		Collez ici votre Rapport d'Espionnage</p>		
    		<textarea name="formulaire" id="CadreFormulaire" rows="10" cols="40">
    		</textarea><br/><br/>
    		<input type="submit" name="valider" value="Envoyer le Rapport"/>
    		</form>
    		</td>
    		</tr>
    		</table>
    	</body>
    <?php
    	if(isset($_POST['valider'])){ 
    	$chaine_form = $_POST['formulaire'];
    	$array_chaine = explode(': ', $chaine_form);
    	print_r($array_chaine);
    	echo $array_chaine[1]  . '<br/>';
     
     
    }
    ?>
    Mon echo me renvoi :
    10 Canon Laser alors qu'il devrait me renvoyer Tour de Combat 10.
    De plus, je souhaiterai que le chiffre et son libellé soit séparé dans le tableau
    Merci d'avance !

  2. #2
    Membre actif
    Inscrit en
    Juin 2006
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 584
    Points : 235
    Points
    235
    Par défaut
    tu fois faire d'abord un explode par ligne \n
    ensuite tu fait un explode par : et tu supprime les espaces inutiles.

  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
    Voila, en optimisant le print_r ce que j'ai:
    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
    Array
    (
        [0] => Tour de Combat
        [1] => 10
    Canon Laser
        [2] => 1.000
    Grand Canon Laser
        [3] => 10
    Rayon Tracteur
        [4] => 30
    Lanceur de Missiles
        [5] => 5
    Satellite à Ions
        [6] => 30
    Batterie Electromagnétique
        [7] => 30
    Canon à Plasma
        [8] => 30
    Silos à Missiles HEM
        [9] => 856
     
    )
    La on voit bien le décalage qui me chamboule tout :s
    Silvouplait pouvez vous m'aider en respectant le code que j'ai mis et en évitant les trucs trop trop compliqués

  4. #4
    Membre actif
    Inscrit en
    Juin 2006
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 584
    Points : 235
    Points
    235
    Par défaut
    oui c'est normal, tu a dit de séparer par les points, donc il prend les chaines comprisent entre les points, ca donne :

    Tour de Combat
    :
    10 Canon Laser
    :
    1.000 Grand Canon Laser
    :
    10 Rayon Tracteur:....


    Lit mon message plus haut, il faut d'abord séparer par les lignes.

  5. #5
    Membre éclairé Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Points : 831
    Points
    831
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	$array_chaine = explode("\r\n", $chaine_form);
    	echo $array_chaine[0]  . '<br/>';
    Fred

  6. #6
    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 j'avais pas vu ^^
    Oui voila je cherchai a séparer les lignes mais je savais pas quelque commande mettre dans le explode.
    Je test mais sa me met toujours la même chose :s.
    Voici le code maintenant:
    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
    	<head><title>Simulateur de Combats Spatiaux</title>
    	<link rel="stylesheet" media="screen" type="text/css" title="design3" href="Css2.css" />
    	</head>
    	<body>
    		<table>
    		<tr>
    		<td>
    		<form name="formulaire" method="post" action="testons.php">
    		<p>Défenseur <br/>
    		Collez ici votre Rapport d'Espionnage</p>		
    		<textarea name="formulaire" id="CadreFormulaire" rows="10" cols="40">
    		</textarea><br/><br/>
    		<input type="submit" name="valider" value="Envoyer le Rapport"/>
    		</form>
    		</td>
    		</tr>
    		</table>
    	</body>
    <?php
    	if(isset($_POST['valider'])){ 
    	$chaine_form = $_POST['formulaire'];
    	$array_chaine = explode('\n', $chaine_form);
    	$array_chaine = explode(':', $chaine_form);
    	echo '<pre>';
    	print_r($array_chaine);
    	echo '</pre>';
    	echo $array_chaine[1]  . '<br/>';
     
     
    }
    ?>

  7. #7
    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
    J'arrive toujours a la bourre ...
    Ok je test sa maintenant micetf

  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
    Cela fonctionne, merci micetf . Maintenant j'ai une autre question, j'arrive a sa :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Array
    (
        [0] => Tour de Combat: 10
        [1] => Canon Laser: 1.000
        [2] => Grand Canon Laser: 10
        [3] => Rayon Tracteur: 30
        [4] => Lanceur de Missiles: 5
        [5] => Satellite à Ions: 30
        [6] => Batterie Electromagnétique: 30
        [7] => Canon à Plasma: 30
        [8] => Silos à Missiles HEM: 856		
    )
    Comment puis-je faire pour séparer le chiffe du libellé? Pour obtenir par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [0] Tour de Combat => 10
    Peut-etre faut-il que je modifie tout ...

  9. #9
    Membre éclairé Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Points : 831
    Points
    831
    Par défaut
    Je n'avais pas tout lu.
    Peut-être que ceci pourra t'aider.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	if(isset($_POST['valider'])){ 
    	$chaine_form = $_POST['formulaire'];
    	$tabTextarea = explode("\r\n", trim($chaine_form));
    	echo "<table>";
    	foreach ($tabTextarea as $ligne) {
    		$tabLigne = explode(": ", $ligne);
    		echo "<tr><td>".$tabLigne[0]."</td><td>".$tabLigne[1]."</td></tr>";
    	}
    	echo "</table>";
    Fred

  10. #10
    Membre actif
    Inscrit en
    Juin 2006
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 584
    Points : 235
    Points
    235
    Par défaut
    Tu parcour ton tableau
    tu fais une boucle foreach.

    pour le explode il faut utiliser en fonction du système du serveur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $array_chaine = explode("\r\n", $chaine_form);
    $array_chaine = explode("\n", $chaine_form);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $array_chaine = explode("\r\n", $chaine_form);
    foreach($array_chaine as $value)
    {
    $res = explode(":",$value)
    $tab[$res[0]] = $res[1];
    }

  11. #11
    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
    hum, interessant.
    Morgan47:Voici le code, mais le server me renvoi une erreur au niveau du $tab[......
    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
    	<head><title>Simulateur de Combats Spatiaux</title>
    	<link rel="stylesheet" media="screen" type="text/css" title="design3" href="Css2.css" />
    	</head>
    	<body>
    		<table>
    		<tr>
    		<td>
    		<form name="formulaire" method="post" action="testons.php">
    		<p>Défenseur <br/>
    		Collez ici votre Rapport d'Espionnage</p>		
    		<textarea name="formulaire" id="CadreFormulaire" rows="10" cols="40">
    		</textarea><br/><br/>
    		<input type="submit" name="valider" value="Envoyer le Rapport"/>
    		</form>
    		</td>
    		</tr>
    		</table>
    	</body>
    <?php
    	if(isset($_POST['valider'])){ 
    	$chaine_form = $_POST['formulaire'];
    	$array_chaine = explode("\r\n", $chaine_form);
    	$array_chaine = explode("\r\n", $chaine_form);
    	foreach($array_chaine as $value)
    	{
    	$res = explode(":",$value)
    	$tab[$res[0]] = $res[1];
    	}
     
    	echo '<pre>';
    	print_r($array_chaine);
    	echo '</pre>';
     
     
    }
    ?>
    Pour micetf, c'est interessant, mais finalement les valeurs ne sont pas séparées ? J'aurai du mal a les exploiter séparément aprés mais effectivement cela marche. Peut tu m'expliquer vite faire a quoi sert le trim ?

  12. #12
    Membre actif
    Inscrit en
    Juin 2006
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 584
    Points : 235
    Points
    235
    Par défaut
    j'ai oublié un ; à la fin de la première ligne dans les accolades

  13. #13
    Membre actif
    Inscrit en
    Juin 2006
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 584
    Points : 235
    Points
    235
    Par défaut
    le trim sert à supprimer les espaces. tu peux le rajouter dans mon code.

  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
    Ok jme doutait que c'était un ;

  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
    morgan qu'est ce que ton code a changé car j'atteris sur la même chose
    Enfin le tableau ne sembl epas avoir bougé ^^

  16. #16
    Membre actif
    Inscrit en
    Juin 2006
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 584
    Points : 235
    Points
    235
    Par défaut
    en fait c'est le même il a été plus rapide que moi ^^

  17. #17
    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
    Lol ok, c'est fou mais ce tableau c'est exactement ce que je souhaitait afficher en premier
    Par contre aprés, si je souhaite utilise le 10 de "Tour de Combat" pour un cacul je fait comment ?

  18. #18
    Membre actif
    Inscrit en
    Juin 2006
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 584
    Points : 235
    Points
    235
    Par défaut
    En fait avec mon code tu gardes tous les résultats dans un tableau.
    Je pense que ca devrai marché :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo $tab['Tour de Combat']
    Ceci affichera 10, donc aprés tu peux faire les calculs avec ca.

  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
    Ok, sa marche comme cela, mais sa me met toujours :
    Notice: Undefined offset: 1 in C:\Program Files\wamp\www\test\testons.php on line 29.
    Puis peut tu m'aider pour adapter le tableau que fait micetf a ton code ? cela m'aiderai vachement car je ne sais pas comme faire pour fabriquer une tableau qu'avec les variables récupérés par mon code

  20. #20
    Membre actif
    Inscrit en
    Juin 2006
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 584
    Points : 235
    Points
    235
    Par défaut
    C'est quoi la ligne 29?

    Pour adapter le tableau, tu a juste a copier mes lignes qui sont dans la boucle dans sont code à lui et à l'adapter.

Discussions similaires

  1. [Batch] Recherche une variable dans texte formaté
    Par canorra dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 27/06/2011, 11h22
  2. capturer une variable dans un [texte de saisie]
    Par ouessant dans le forum Flash
    Réponses: 3
    Dernier message: 10/11/2007, 21h45
  3. Réponses: 5
    Dernier message: 09/11/2007, 08h32
  4. [RegEx] Recherche de mots dans un texte
    Par Dirty Harry dans le forum Langage
    Réponses: 3
    Dernier message: 15/01/2007, 18h29
  5. Rechercher un mot dans un texte
    Par BernardT dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/12/2005, 09h55

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