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 :

Eregi d'une chaine ok, mem chaine dans un fichier nok [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de dark_vidor
    Homme Profil pro
    Élève
    Inscrit en
    Janvier 2005
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Élève

    Informations forums :
    Inscription : Janvier 2005
    Messages : 321
    Points : 118
    Points
    118
    Par défaut Eregi d'une chaine ok, mem chaine dans un fichier nok
    Bonjour,


    Je souhaite récupérer des infos dans un fichier et celle ci ne sont pas toujours au même endroit, mais toujours mise sous la même forme.

    J'ai donc un script qui parcours les lignes...

    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
    function test_param_sfo()
    {
    	global $db, $_FILES, $debug;
     
    	$file = $_FILES['replay']['path_BCES_dir'].'/PARAM.SFO';
    	debug( $_FILES ).'<br>';
    	if( file_exists($file) )
    	{ 
    		$a_file = file($file);
     
    		//Variables
    		$circuit = FALSE;
     
    		foreach( $a_file as $value )
    		{
    			//On récupère la ligne voiture
    			if( eregi('Voiture :', $value) )
    			{
    				$bidon = explode(",", $value);
     
    				$voiture = trim(substr( $bidon[0], 10 ));
    				$physique = trim($bidon[1]);
    				$pneus = trim($bidon[2]);
     
    				echo 'Voiture : '.$voiture.'<br>';
    				echo 'Physique : '.$physique.'<br>';
    				echo 'Pneus : '.$pneus.'<br>';
     
    				unset($bidon);
    			}
     
    			//On récupère le circuit
    			if( stristr('Eiger Nordwand', $value) )
    			{
    				$circuit = TRUE;
    			}
     
    			//On récupère le temps
    			if( eregi('Temps : [0-9].[0-9]{2}.[0-9]{3}', $value, $temps) )
    			{
    				$temps = substr( $temps[0], 8 ); //temps[0] !?
     
    				echo 'Temps : '.$temps.'<br>';
    			}
     
    			//On récupère la version
    			if( eregi('Ver(.)+[0-9].[0-9]{2}.[0-9]{7}', $value, $version) )
    			{
    				$version = substr( $version[0], 5 ); //temps[0] !?;
     
    				echo 'Ver. '.$version.'<br>';
    			}
     
    			//On récupère le BCES
    			if( eregi('[[:alnum:]]{9}-RPLY2-B-[[:alnum:]]{11}', $value, $bces) )
    			{
    				echo 'BCES : '.$bces[0].'<br>';
    			}
     
     
    		}
    		debug( $a_file );
    	}
     
    	//rmdir()
    }
    Ce qui me pose pb c'est la dernière condition ...

    Pourtant si je fait un script de test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $bces = 'BCES00104-RPLY2-B-3A457A67014';
    if( eregi('[[:alnum:]]{9}-RPLY2-B-[[:alnum:]]{11}', $bces) )
    {
    	echo 'TRUE';
    }
    else
    {
    	echo 'FALSE';
    }
    ça fonctionne parfaitement

    voici le contenu du fichier en question :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Array
    (
        [0] => �PSF��Ä���@���������������������������������������z���������%����������,����������4�������$��C����@���(��V�������h��j�%���€���p��t�0���€���ð��ACCOUNT_ID�ATTRIBUTE�CATEGORY�DETAIL�PARAMS�PARAMS2�PARENTAL_LEVEL�SAVEDATA_DIRECTORY�SAVEDATA_LIST_PARAM�SUB_TITLE�TITLE���0346eecb89e15286����SD��Circuit : Eiger Nordwand 
     
        [1] => Voiture : Volkswagen Golf GTI '05, Professionnelles, S3/S1 
     
        [2] => Temps : 1'12.470 
     
        [3] => Ver. 3.00.4138044�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������SÐ
    À@¿èf|‰¡¸>l���0346eecb89e15286�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BCES00104-RPLY2-B-3A457A67014�����������������������������������REPLAY��[014]Rediffusion fantôme : FREE_RUN��������������������������������������������������������������������������������������������Gran Turismo 5 Prologue - Rediffusion fantôme ���������������������������������������������������������������������������������
    )
    Attention c'est pas toujours dans cette ordre la !

    Je n'arrive donc pas a récupérer ma chaine dans la ligne 4 du fichier

  2. #2
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Bonsoir,

    Ton fichier de données est-il vraiment dans le format que tu as collé ?

  3. #3
    Membre régulier Avatar de dark_vidor
    Homme Profil pro
    Élève
    Inscrit en
    Janvier 2005
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Élève

    Informations forums :
    Inscription : Janvier 2005
    Messages : 321
    Points : 118
    Points
    118
    Par défaut
    Heu non c'est le debug du tableau (ma fonction debug met les <pre> et un print_t)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     PSF  Ä   @                                       z         %          ,          4       $  C    @   (  V       h  j %   €   p  t 0   €   ð  ACCOUNT_ID ATTRIBUTE CATEGORY DETAIL PARAMS PARAMS2 PARENTAL_LEVEL SAVEDATA_DIRECTORY SAVEDATA_LIST_PARAM SUB_TITLE TITLE   0346eecb89e15286    SD  Circuit : Eiger Nordwand 
    Voiture : Volkswagen Golf GTI '05, Professionnelles, S3/S1 
    Temps : 1'12.470 
    Ver. 3.00.4138044                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           SÐ
    À@¿èf|‰¡¸>l   0346eecb89e15286                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                BCES00104-RPLY2-B-3A457A67014                                   REPLAY  [014]Rediffusion fantôme : FREE_RUN                                                                                            Gran Turismo 5 Prologue - Rediffusion fantôme
    voila

  4. #4
    Membre régulier Avatar de dark_vidor
    Homme Profil pro
    Élève
    Inscrit en
    Janvier 2005
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Élève

    Informations forums :
    Inscription : Janvier 2005
    Messages : 321
    Points : 118
    Points
    118
    Par défaut
    c'est étonnant avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match('`([[:alnum:]]{9})-RPLY2-B-([[:alnum:]]{11})`', $value, $bces)
    ça fonctionne

    j'y comprends rien

  5. #5
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    J'y arrive 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
    <?php
    $myString = "PSF  Ä   @                                       z         %          ,          4       $  C    @   (  V       h  j %   €   p  t 0   €   ð  ACCOUNT_ID ATTRIBUTE CATEGORY DETAIL PARAMS PARAMS2 PARENTAL_LEVEL SAVEDATA_DIRECTORY SAVEDATA_LIST_PARAM SUB_TITLE TITLE   0346eecb89e15286    SD  Circuit : Eiger Nordwand 
    Voiture : Volkswagen Golf GTI '05, Professionnelles, S3/S1 
    Temps : 1'12.470 
    Ver. 3.00.4138044                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           SÐ
    À@¿èf|‰¡¸>l   0346eecb89e15286                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                BCES00104-RPLY2-B-3A457A67014                                   REPLAY  [014]Rediffusion fantôme : FREE_RUN                                                                                            Gran Turismo 5 Prologue - Rediffusion fantôme";
     
    function test_param_sfo($myString)
    {
    		//On récupère la ligne voiture
    		if( preg_match('/^Voiture : (.*)/m', $myString, $match) ) {
    			list($voiture, $physique, $pneus) = preg_split('/\s*,\s*/', trim($match[1]));
    			print "$voiture\n";
    			print "$physique\n";
    			print "$pneus\n";
    		}
     
    		//On récupère le circuit
    		if( preg_match('/(Eiger Nordwand)/', $myString, $match) ) {
    			$circuit = TRUE;
    			print $match[1]."\n";
    		}
     
    		//On récupère le temps
    		if( preg_match('/^Temps\s*:\s*([0-9].[0-9]{2}.[0-9]{3})/m', $myString, $match) ) {
    			$temps = $match[1];
    			print 'Temps : '.$temps."\n";
    		}
     
    		//On récupère la version
    		if( preg_match('/Ver\.\s+([0-9]+\.[0-9]+\.[0-9]+)\s/m', $myString, $match) ) {
    			$version = $match[1];
    			echo 'Ver. '.$version."\n";
    		}
     
    		//On récupère le BCES
    		if( preg_match('/[[:alnum:]]{9}-RPLY2-B-[[:alnum:]]{11}/', $myString, $match) ) {
    			print $match[0]."\n";
    		}
    }
     
    test_param_sfo($myString);
    c'est une piste pour continuer

  6. #6
    Membre régulier Avatar de dark_vidor
    Homme Profil pro
    Élève
    Inscrit en
    Janvier 2005
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Élève

    Informations forums :
    Inscription : Janvier 2005
    Messages : 321
    Points : 118
    Points
    118
    Par défaut
    oui c'est ce que j'ai fait du coup

    mais j'ai pas compris pourquoi

    tant pis

    merci du coup de main

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Rechercher et remplacer une chaine à un endroit précis dans un fichier
    Par david2109 dans le forum Shell et commandes POSIX
    Réponses: 17
    Dernier message: 26/08/2013, 22h35
  2. [Batch] Rechercher et renommer une chaine de caractère complexe dans un fichier texte
    Par mrcanardwc dans le forum Scripts/Batch
    Réponses: 11
    Dernier message: 24/06/2011, 13h02
  3. Réponses: 14
    Dernier message: 12/12/2007, 17h08
  4. Réponses: 11
    Dernier message: 05/11/2007, 14h38

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