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 :

Découpage de chaîne


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 19
    Points : 23
    Points
    23
    Par défaut Découpage de chaîne
    Bonjour, j'aimerais formatter des chaines de caractères. Démo par l'exemple:
    J'ai un fichier avec des lignes comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    blabla\t\tCONSTANT
    bla blabla bla   \t   CONSTANT
    blaCONSTANT
    J'aimerais le formatter de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    blabla;CONSTANT
    bla blabla bla;CONSTANT
    bla;CONSTANT
    CONSTANT est un mot et rien ne vient derrière.
    Je ne m'y retrouve pas avec les trim rtrim substr_replace
    Un preg_replace pourrait fonctionner avec une regex mais je n'y parviens pas.
    Pouvez-vous m'aider ?

  2. #2
    Membre émérite
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Points : 2 724
    Points
    2 724
    Billets dans le blog
    1
    Par défaut
    Il faut d'abord que tu identifie les règles de découpe, ensuite tu pourras codé une fonction de découpage.

    en lisant tes exemples, je ne trouve pas de règle de découpe conventionnelle, pourrais-tu l'expliciter?
    Pas de solution, pas de probleme

    Une réponse utile (ou +1) ->
    Une réponse inutile ou pas d'accord -> et expliquer pourquoi
    Une réponse à votre question


  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 19
    Points : 23
    Points
    23
    Par défaut
    La chaîne à gauche de mon mot CONSTANT peut contenir des espaces. En revanche il ne faut ni espace ni tabulation en début et en fin de cette chaîne.
    Ainsi je pourrais extraire la chaine de gauche et passer un trim() dessus. Le mot CONSTANT peut être une simple lettre. Je ne parviens donc pas extraire aisément la chaine de gauche.
    une fois cette chaine épurée, il me faudra simplement rajouter ;CONSTANT à la suite, ce qui ne posera pas de problème.

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $pattern = "/[\s]*CONSTANT/";
    $chaine = "blabla		CONSTANT";
    echo preg_replace($pattern, ";CONSTANT", $chaine);
    A+.

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 19
    Points : 23
    Points
    23
    Par défaut
    Merci pour ta réponse mais il y a un souci.
    Le mot constant se trouve en fin de ligne.
    Mais si ce mot se retrouve dans la chaine de gauche alors il y a modification.
    exemple:
    CONSTANT: 'eu'
    ligne : ' club des développeurs \t eu'
    résultat : 'club des développ;eurs;eu'

  6. #6
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pattern = "/([\s]*CONSTANT[\s]*)$/";
    A+.

  7. #7
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 19
    Points : 23
    Points
    23
    Par défaut
    Un \n subsistait dans le cas où il n'y avait pas de CONSTANT. Merci beaucoup.
    Pourrais-tu m'expliquer la regex ?


    edit: ca n'a pas l'air de fonctionner avec des espaces en début de ligne :/

  8. #8
    Membre émérite
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Points : 2 724
    Points
    2 724
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $pattern="/(?P<chaine1>.*)(?P<chaine2>CONSTANT$)/";
    preg_match($pattern, $str, $matches);
    $debut = trim($matches["chaine1"]);
    $result = $debut.$matches["chaine2"];
    C'est à peu près ce qu'il faut faire, ensuite tu adaptes à tes besoins, on va pas tout faire non plus .

    Pour plus d'info, regarde ici (preg_match)
    Pas de solution, pas de probleme

    Une réponse utile (ou +1) ->
    Une réponse inutile ou pas d'accord -> et expliquer pourquoi
    Une réponse à votre question


  9. #9
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $pattern = "/^(\s*)(.*\S)(\s*CONSTANT\s*)$/";
    $chaine = "         df     blabla	d   j	CONSTANT  ";
    echo preg_replace($pattern, "$2;CONSTANT", $chaine);
    A+.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/10/2007, 14h39
  2. Réponses: 4
    Dernier message: 19/10/2007, 09h46
  3. [Tableaux] Découpage de chaîne
    Par ssebuser dans le forum Langage
    Réponses: 10
    Dernier message: 21/12/2006, 17h12
  4. Découpage de chaînes
    Par innova dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 21/10/2006, 10h07
  5. [Débutant] Découpage de chaîne
    Par wkd dans le forum WinDev
    Réponses: 4
    Dernier message: 26/07/2006, 15h43

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