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 :

Extraire un bloc de texte entre 2 lignes vides


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 25
    Par défaut Extraire un bloc de texte entre 2 lignes vides
    Bonjour,

    Voilà je sèche sur une regexp.
    A partir de la fonction preg_match_all en PHP, j'essaie d'extraire les paragraphes.

    Ce qui délimite un paragraphe est une ligne vide avant/après.
    On ressort les lignes vides avec le pattern "^$" mais dans le cas présent ca ne m'aide pas, moi je souhaiterais le bloc de texte entier.
    Un pattern comme '/^$(.*)^$/sU' ne fonctionne pas.

    3 blocs devraient ressortir de l'exemple suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    banane
    fraise
    poire
     
    voiture
    moto
    avion
     
    bleu
    blanc
    rouge
    Merci pour votre aide !

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 25
    Par défaut
    J'ai trouvé, il faut jouer avec les métas-caractères de saut de ligne

    Pattern pour un fichier Unix:

    Par contre, le match de la regexp d'avant bouffe le début de la regexp suivante s'il n'y a qu'une seule ligne d'écart, ce qui fait qu'un seul paragraphe sur 2 est détecté.

    il faut que les paragraphes soient séparés d'au moins 2 lignes vides.
    Ca marche, ceci dit si vous avez une solution plus efficiente je prends!

  3. #3
    Membre Expert
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Par défaut
    Salut,

    Je te propose ceci /^\s*(.+?)(?:\s*[\r\n]+$|\z)/gsm

    À noter que pour chaque paragraphe ne sont pas capturés :

    • les premiers espaces de la première ligne
    • les derniers espaces de la dernière ligne


    Concrètement, c'est comme si nous appliquions la fonction trim() à chaque paragraphe.

    Si toutefois, ces espaces doivent être capturés, il suffit de supprimer " \s* " du motif.

Discussions similaires

  1. Réponses: 6
    Dernier message: 08/04/2013, 17h36
  2. [XL-2003] Copier des lignes dans une autre feuille à la première ligne vide
    Par PasDan dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/09/2010, 13h34
  3. [XL-2007] recherche de la première ligne vide
    Par Wyz_Ken dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/10/2009, 16h19
  4. Ecrire sur la première ligne vide
    Par vanille972 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 27/08/2007, 09h30
  5. Remplir la première ligne vide
    Par Azounet1529 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/07/2007, 10h15

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