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 :

Parser une chaine de caractères


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 296
    Par défaut Parser une chaine de caractères
    bonjour,
    je cherche à faire pareil "parser une chaîne de caractère"
    est ce que vous pouvez me donner un exemple comment ça se fait
    sinon voila ma chaîne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    $msg= "0200 0707 1304 2926 0369 015B 0000 0000 0000 0000 0000 0000 
    	   11AF 6100 0005 0400 0000 0000 0000 0000 0500 FF00 0000 0000 
    	   0000 00";
    je ne sais pas comment l'attaquer pour la parser
    et je voudrais récupérer des variables qui contiennent plusieurs caractère
    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
     
     $jsp1 = 4 char; 
     $date = 6 char;
     $heure = 6 char; 
     $jsp2 = 4 char; 
     $jsp3 = 4 char;  
     $jsp4 = 24 char;  
     $codm = 4 char; 
     $tyr16 = 4 char; 
     $rgca = 2 char; 
     $icmate = 2 char; 
     $icolog = 2 char ; 
     $idmu = 2 char;   
     $idad = 2 char; 
     $asml = 4 char; 
     $inf = 8 char;
     $forme =2 char;
     $numano = 4 char;  
     $diapr = 2 char; 
     $infcp = 14 char;
    et après les afficher
    merci bcp de votre aide

  2. #2
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Bonjour,

    J'aurai tendance à dire que ce n'est pas réellement utile d'utiliser les regexp dans ce cas précis.
    Ce qu'il vous faut c'est utiliser simplement la fonction substr() de php avec les bons paramètres en indiquant à quel caractère commencer et auquel s'arreter.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 296
    Par défaut
    d'abord merci pour la piste
    la fonction substr() je ne sais pas exactement comment ça marche.
    je vais essayé d'avancer er revenir vers vous pour me corriger si je trouve des difficulté

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 296
    Par défaut
    me voila tout perdu
    dites moi ce que vous en pensez de ce que j'ai fais
    n'hésiter pas à retoucher le code
    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
     
    <?php
    $msg= "0200 0707 1304 2926 0369 015B 0000 0000 0000 0000 0000 0000 
    	   11AF 6100 0005 0400 0000 0000 0000 0000 0500 FF00 0000 0000 
    	   0000 00";
    for ($i=0; $i<count(strlen($msg)); $i++)
    {
    	$lettre[$i] = substr($msg,$i,1);
    } 
     $jsp1 = $lettre[$0].$lettre[$1].$lettre[$2].$lettre[$3]; // 4 caractère
     $date = // 6 caractères
     $heure =  
     $jsp2 = 
     $jsp3 =   
     $jsp4 =  
     $codm = 
     $tyr16 = 
     $rgca =
     $icmate = 
     $icolog = 
     $idmu =  
     $idad = 
     $asml =
     $inf = 
     $forme = 
     $numano = 
     $diapr =  
     $infcp = 
    ?>
    merci de votre aide

  5. #5
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Je pense que substr (comme déjà dit sera plus appropprié)
    Exemple pour les deux/trois premiers:
    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
    <?php
    $msg= "0200 0707 1304 2926 0369 015B 0000 0000 0000 0000 0000 0000 
    	   11AF 6100 0005 0400 0000 0000 0000 0000 0500 FF00 0000 0000 
    	   0000 00";
     
    // 1/ on retire les espaces ca sera plus simple :
    $msgNoSpace = str_replace(" ", "", $msg);
     
    // 2/ on recupere les 4 premiers caractères
    // Premier paramètre : la chaine globale
    // Deuxieme paramètre : le numéro du premier caractère a prendre
    //           0 est considéré comme le premier de la chaine
    // Troisieme paramètre : le nombre de caractères à prendre
    $jsp1 = substr($msgNoSpace, 0, 4);
    $date = substr($msgNoSpace, 4, 6);
     
    //etc.

  6. #6
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 373
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 373
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par mariafan
    la fonction substr() je ne sais pas exactement comment ça marche.
    Dans ce cas il faut consulter la doc http://www.php.net/substr

    Si tu veux que $jsp1 contienne les 4 premiers caractères de $msg :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $jsp1 = substr($msg, 0, 4) ;
    Que $date contienne 4 caractères à partir du 6e (donc indice 5 dans la chaîne) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $date = substr($msg, 5, 4) ;
    etc.
    La fonction sscanf( ) peut être intéressante pour toi : http://www.php.net/sscanf

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 296
    Par défaut
    effectivement j'ai repris mon code
    je le sens bien mais j'ai seulement un message d'erreur
    Fatal error: Call to undefined function: strreplace() in c:\program files\easyphp1-8\www\decode.php on line 7
    je crois qu'il faut ajouter qqc
    merci pour votre aide

  8. #8
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    un underscore entre str et replace
    la fonction est str_replace petite confusion, désolé (j'ai modifié mon message en conséquence)

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

Discussions similaires

  1. [XL-2007] Parser une chaine de caractère SQL avec un code en VBA
    Par Sosthy10 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/06/2015, 11h49
  2. Parser une chaine de caractères
    Par batchi dans le forum Général Python
    Réponses: 3
    Dernier message: 05/02/2014, 11h34
  3. [DOM] Parser une chaine de caractères au lieu d'un fichier
    Par kkt8 dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 27/03/2012, 10h30
  4. [XML] Parser une chaine de caractère XML
    Par lololeuleu dans le forum APIs
    Réponses: 10
    Dernier message: 16/08/2007, 21h27
  5. Parser une chaine de caractère
    Par Nasky dans le forum C++
    Réponses: 7
    Dernier message: 04/12/2006, 19h37

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