Précédent   Forum des professionnels en informatique > 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 Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/05/2008, 18h51   #1
Membre éclairé
 
Homme
Développeur Web
Inscription : avril 2004
Messages : 319
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Ille et Vilaine (Bretagne)

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

Informations forums :
Inscription : avril 2004
Messages : 319
Points : 325
Points : 325
Par défaut Supprimer les balises <a ... </a> d'une chaine de caractères

Bonjour à tous.

Je dois "filtrer" un texte en enlevant tout les liens, et pas seulement les balises. En gros tout ce qu'il y a entre <a et </a>.
Ca parait tout simple, mais je me bats avec depuis un moment en vain...
J'ai bien essayé la fonction ereg_replace, mais je n'arrive pas du tout avec les expressions rationnelles.
J'en ai essayé quelques unes mais sans grand résultat.

Merci de votre aide
Guybrush113 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2008, 11h33   #2
Modérateur
 
Avatar de Nesmontou
 
Homme Benjamin PREVOT
Architecte de système d'information
Inscription : septembre 2004
Messages : 1 571
Détails du profil
Informations personnelles :
Nom : Homme Benjamin PREVOT
Âge : 30
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Architecte de système d'information
Secteur : Finance

Informations forums :
Inscription : septembre 2004
Messages : 1 571
Points : 2 527
Points : 2 527
Salut, tu peux essayer ceci
Code :
1
2
3
4
5
6
7
<?php
$pattern = '#<a[^<]*>[^<]*</a>#im';
$subject = '<a href="test">test</a> essai <a href="test">test</a>';
 
echo $subject . ' -> ' . preg_replace($pattern, '', $subject);
// Affiche : <a href="test">test</a> essai <a href="test">test</a> ->  essai 
?>
Bon développement
__________________
Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement. Albert EINSTEIN

F.A.Q. : Java, PHP, (X)HTML / CSS

N'oubliez pas de cliquer sur le bouton Résolu en bas de page quand vous avez obtenu une solution à votre problème
Nesmontou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2008, 12h12   #3
Membre actif
 
Avatar de savageman86
 
Inscription : octobre 2006
Messages : 102
Détails du profil
Informations personnelles :
Âge : 25
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2006
Messages : 102
Points : 180
Points : 180
Code :
debut <a href="<><" onclick="bouh">bla bla</a> fin
Ceci n'est pas transformé par ton masque...

Ma proposition :
Code :
1
2
<?php
$pattern = '#<a[^>]*>((?:.+?)(?=</a>)</a>|(?:.*$))#im';
@+
savageman86 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2008, 16h42   #4
Inactif
 
Inscription : mai 2008
Messages : 179
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 179
Points : 179
Points : 179
Ma proposition :
http://simplehtmldom.sourceforge.net

Les expressions régulières, spa fait pour parser du html. :/
sielfried est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2008, 08h38   #5
Nouveau Membre du Club
 
Inscription : mai 2008
Messages : 34
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 34
Points : 36
Points : 36
salut
Citation:
Envoyé par savageman86 Voir le message
Ma proposition :
Code :
1
2
<?php
$pattern = '#<a[^>]*>((?:.+?)(?=</a>)</a>|(?:.*$))#im';
Imagine ce que ça donnerait avec un autre élément commençant <a (abbr, acronym, address...)
Ne fonctionnerait pas non plus si l'élément A est sur plusieurs lignes.
Par ailleurs, à moins que quelques subtilités m'échappent, j'ai l'impression qu'on pourrait obtenir un même résultat en le simplifiant.

Pour ma part je ferais tout simplement :
Code :
$pattern='#<a\s.*?</a>#si';
évidement ne marcherait pas dans des cas comme <a href=""><!--</a>--> ou <a href="" title="</a>">
si on veut prévenir ce genre de cas improbable, on doit effectivement recourir à un vrai parseur html
Alain.g est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h47.


 
 
 
 
Partenaires

Hébergement Web