Précédent   Forum du club des développeurs et IT Pro > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 30/10/2012, 20h33   #1
rekam
Invité de passage
 
Inscription : novembre 2002
Messages : 16
Détails du profil
Informations forums :
Inscription : novembre 2002
Messages : 16
Points : 4
Points : 4
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 :
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
rekam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2012, 21h22   #2
sabotage
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 16 861
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 16 861
Points : 21 924
Points : 21 924
Dans les expressions régulières, la fin d'une chaine est representée par $.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/10/2012, 18h16   #3
rekam
Invité de passage
 
Inscription : novembre 2002
Messages : 16
Détails du profil
Informations forums :
Inscription : novembre 2002
Messages : 16
Points : 4
Points : 4
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 :
1
2
 
preg_replace('/(<br\/?>(<br>)\s*)$/', '', $description);
ou ça
Code :
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 :
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!
rekam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/10/2012, 19h42   #4
ABCIWEB
Expert Confirmé
 
Homme Alain
Inscription : septembre 2010
Messages : 1 926
Détails du profil
Informations personnelles :
Nom : Homme Alain
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : septembre 2010
Messages : 1 926
Points : 2 866
Points : 2 866
Et trim ne te convient pas ?
Code :
1
2
$str2 = "<strong>autre test</strong><br><br>    <br><br>         <br>";
$str2 = trim($str2," <br>");
(cela fonctionnerait aussi pour $str1)
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/11/2012, 00h55   #5
CosmoKnacki
Membre habitué
 
Avatar de CosmoKnacki
 
Homme
Inscription : mars 2009
Messages : 106
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : mars 2009
Messages : 106
Points : 130
Points : 130
Bonjour,

sinon tu peux essayer ça (l'idée est de capturer la partie que l'on souhaite conserver) :
Code :
$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 :
$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.
CosmoKnacki est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 20h05.


 
 
 
 
Partenaires

Hébergement Web