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 :

problème découpage ligne [PHP 5.0]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 104
    Par défaut problème découpage ligne
    Bonjour à tous,

    Alors mon problème est que je n'arrive pas à trouver une solution afin de découper correctement des lignes que je récupère sur un fichier.
    Je vous explique :

    Mon fichier est un fichier imprimé sous UNIX. On me balance les fichiers sur mon serveur afin que je le lise pour extraire certaines infos et les insérer en bases.
    Les lignes que je récupère sont de cette forme :

    12345 45121 Libelle d'un objet 5451254 158484 12.5
    12789 451 Libelle d'un objet plus long 4561254 158484 12.5
    ...
    Le problème est que les valeurs n'ont pas toujours la même longueurs, donc impossible de récupérer mes valeurs via un substr() et je ne peux pas découper ma ligne par un explode() puisqu'il n'y a aucun séparateur. S'il n'y avait pas le libellé j'aurais pu utiliser l'espace mais malheureusement ce n'est pas le cas.

    quelqu'un aurait-il une idée ?

    Merci pour votre aide!

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 101
    Par défaut
    Bonjour,

    Normalement dans ce genre de fichier on entoure les chaines de caractères par des doubles quotes par exemple pour pouvoir tjrs utiliser l'espace ou la tabulation comme un separateur. de champs valable.

    Si tu ne peut vraiement pas faire cela, tu peut essayer ça :

    avec preg_match :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #^([0-9]+)\s+([0-9]+)\s+(.*)\s+([0-9]+)\s+([0-9]+)$#

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 104
    Par défaut
    En fait à la base le fichier n'est pas prévu pour cela ^^ sinon je suppose qu'ils auraient prévu une version à m'envoyer pour le découper plus facilement.

    Comment utilises-tu le preg_match ?

    est-ce :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match("^([0-9]+)\s+([0-9]+)\s+(.*)\s+([0-9]+)\s+([0-9]+)$","$ma_ligne")

  4. #4
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    juste par hasard, n'y aurait-il pas un probleme avec un retours de fin de ligne en "\n" alors que ton windows attends des "\n\r" ou le contraire?

    wordpad est plus tolérant pour ça.

  5. #5
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    utilise cette syntaxe de preg_match, mais je suis pret à parier qu'il y a des \n à la fin de ligne que tu ne vois pas.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (preg_match( $motif , $chaine, $capture ) )
    {
    print_r($capture);
    }

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 104
    Par défaut
    pour les retours de ligne je ne pense pas, j'ai essayé de faire un trim() pour virer les caractères invisibles en début et fin de fichier.

    Par contre, j'ai remarqué en ouvrant le fichier sous notepad++ qu'il prend les grands espaces ( 1245 libelle 453697 ) comme un seul. Vu que les fichiers viennent d'un système UNIX j'ai essayé de les convertir, via ultra-edit, en format DOS. En les re-ouvrant après sous notepad++ il prend bien plusieurs espaces. Y a t'il un moyen de convertir les fichier via php ?

    J'essaierai le preg_match() de toute façon et je vous tiendrais au courant.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 104
    Par défaut
    est ce bien cela la syntaxe à utiliser pour le preg_match:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $motif = "^([0-9]+)\s+([0-9]+)\s+(.*)\s+([0-9]+)\s+([0-9]+)$";
    preg_match( $motif , $ligne, $capture );
    print_r($capture);

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/04/2007, 14h55
  2. [XSLT] Problème de ligne vide dans le flux de sortie
    Par Guillaume.chatel dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 07/02/2007, 10h57
  3. Réponses: 1
    Dernier message: 10/07/2006, 10h15
  4. problème flexgrid lignes fixes
    Par sab_etudianteBTS dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 29/06/2006, 09h48
  5. Problème extraire ligne d'une table
    Par bubi dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 22/11/2005, 11h35

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