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 :

Quel pattern pour supprimer les derniers <br> d'une string?


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2002
    Messages : 16
    Points : 10
    Points
    10
    Par défaut Quel pattern pour supprimer les derniers <br> d'une string?
    Bonsoir!

    Je cherche un moyen de supprimer les derniers <br> contenus dans une string. Celle-ci peut tout-à-fait en contenir, dans le genre de ci-dessous:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $str = "<p>du texte<span>blablabla</span></p><br/><br/>Mais surtout voilà!</br>     <br>";
    L'idée, c'est de purger les <br> après lesquels il n'y a plus que des espaces ou des autres <br>.

    J'ai essayé ceci:preg_replace('/(<br\/?>\s*)/', '', $str); mais ça me les enlève tous ^^

    Merci d'avance!
    rekam

  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
    Points : 44 155
    Points
    44 155
    Par défaut
    Dans les expressions régulières, la fin d'une chaine est representée par $.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2002
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Dans les expressions régulières, la fin d'une chaine est representée par $.
    Certes, j'avais omis ce détail. Ceci dit, je n'arrive toujours pas à mes fins, sachant qu'en essayant ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    preg_replace('/(<br\/?>(<br>)\s*)$/', '', $description);
    ou ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    preg_replace('/(<br\/?>\s*)$/', '', $description);
    Le résultat est identique: rien ne se supprime. Encore une fois, l'idée est la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $str1 = "<strong>test</strong><br>       <br><br><br>  <br><p>et hop</p><br>";
    // le résultat est que le dernier <br> est supprimé
     
    $str2 = "<strong>autre test</strong><br><br>    <br><br>         <br>";
    // il ne devra rester que le <strong>
    Encore merci!

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Et trim ne te convient pas ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $str2 = "<strong>autre test</strong><br><br>    <br><br>         <br>";
    $str2 = trim($str2," <br>");
    (cela fonctionnerait aussi pour $str1)

  5. #5
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 857
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 857
    Points : 6 555
    Points
    6 555
    Par défaut
    Bonjour,

    sinon tu peux essayer ça (l'idée est de capturer la partie que l'on souhaite conserver) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $str=preg_replace('/^(.*?)(?:(?:<br>)|\s)*$/', "$1", $str);
    ça enlève les <br> et les espaces à la fin.

    Après si tes chaînes ont des <br> avec des espaces ou des slashes façon xhtml (<br />,<br/>) ou plus exotiques (</br>), comme dans ton premier exemple, tu peux le préciser:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $str=preg_replace('/^(.*?)(?:(?:<\/?br\s?\/?>)|\s)*$/', "$1", $str);
    Aprés on peut se lancer dans la lecture de Maîtrise des Expressions Régulières de Jeffrey E.F. Friedl - Ed. O'Reilly en n'oubliant pas de se fouetter avec des orties fraîches toutes les deux heures.

    Bon courage.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

Discussions similaires

  1. pour supprimer les doublons d'une table qcq
    Par lamjed dans le forum Oracle
    Réponses: 7
    Dernier message: 19/12/2008, 16h42
  2. Supprimer les dernieres lignes et concatener plusieurs fichier
    Par filsdugrand dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 11/04/2006, 21h15
  3. Quel outil pour créer les interfaces graphique en Java ?
    Par youp_db dans le forum Interfaces Graphiques en Java
    Réponses: 9
    Dernier message: 11/01/2006, 07h30
  4. supprimer les dernieres lignes d'un classeur excel
    Par zouille dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/12/2005, 11h23

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