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 :

Suite de lignes qui commencent par un même symbole ? [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Novembre 2013
    Messages : 7
    Par défaut Suite de lignes qui commencent par un même symbole ?
    Bonjour/bonsoir,

    Je cherche à matcher une suite de lignes qui commencent par un même symbole, et stopper la regex dès qu'une nouvelle ligne commence par autre chose.

    Dans l'idée ça donnerait ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Texte
    *ligne
    *ligne
    *ligne
    Autre texte
    Encore du texte
    Et mon essai de regex, qui n'a pas fonctionné (je débute, ne pas rire trop fort ) :

    Merci à ceux qui pourront m'aider à y voir plus clair .

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Je te propose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    preg_match('#(\*.+\r\n)+#', $text, $output);
    echo trim($output[0]);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Novembre 2013
    Messages : 7
    Par défaut
    Merci tu m'as sauvé de la folie . Cette regex fonctionne, mais je n'arrive pas à la comprendre ...
    J'ai un dernier souci, *ligne n'est pas match en fin de texte.

    Par exemple ceci :
    Texte
    Texte
    *ligne
    *ligne

    *dernier
    (fin)
    Va me donner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    preg_match('#(\*.+\r\n)+#', $text, $output);
    print_r($output[0]);
     
    *ligne
    *ligne
    Je n'ai aucun autre souci ailleurs, que ce soit en début ou fin de texte .

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Sinon comme ça, c'est peut etre mieux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    preg_match_all('#\*.+#', $text, $output);
    echo implode('', $output[0]);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Novembre 2013
    Messages : 7
    Par défaut
    Helas non ça s'éloigne de ce que je cherche à faire, car ça va tout regrouper dans le même array.

    Mais j'ai réussi à contourner le problème en ajoutant une ligne à la fin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $text = $text . "\r\ntexte";
    // (...)
    $text = preg_replace_callback("#(\*.+\r\n)+#",makemealist,$text);
    $texte = str_replace("texte", "", $texte);
    return $texte;
    J'ai un dernier souci, ça ne vérifie pas si la ligne commence par une étoile. Donc ceci :
    texte*texte
    *ligne
    *ligne
    Tout va être match, alors que la première n'est pas en début de ligne. J'ai essayé de rajouter ^ au début mais ça ne fonctionne pas.

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    car ça va tout regrouper dans le même array.
    Je n'ai pas compris
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/01/2011, 16h41
  2. Réponses: 1
    Dernier message: 30/09/2010, 11h34
  3. sed: remplacer une ligne qui commence par Version
    Par lili2704 dans le forum Linux
    Réponses: 8
    Dernier message: 21/07/2008, 15h26
  4. Réponses: 5
    Dernier message: 19/01/2007, 23h53
  5. Réponses: 6
    Dernier message: 08/07/2006, 13h07

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