Merci de réagir, gcyrillus !

En PHP. L'idée est de détecter toute balise HTML.

J'en suis à "/^<[^>]*>$/", mais cela ne le fait pas.
Modifié par dagobert (11 Apr 2022 - 18:18)
Salut,

c'est quoi l'objectif derrière ?

A voir ta regexp cela semble être une ligne qui commence et fini par la balise. Il faut que ce soit des vrais balises HTML ou juste que ça ressemble à des balises ?
<a><b><c></c></b></a> (on doit detecter la balise c même si ça n'existe pas ?)

Il faut que cela détecte des paires de balises ? Ou chaque élément séparé peu importe que ce soit un début ou une fin de balise ?

Et tu veux obtenir la balise entière ou juste le nom de la balise (ou son contenu sans les chevrons ?)

En solution pour balise entière je dirais :
/(<.*?>)/g

Après cela ne va pas détecter si c'est des balises mal formé ou autre Smiley ohwell
Bonjour,

L'expression `<([^>]+>` devrait être plus rapide que `<.*?>`, mais sinon c'est normalement à peu près équivalent il me semble.
Attention toutefois aux balises qui sont sur plusieurs lignes ! Ajouter les options s et/ou m si besoin.

A noter que les expressions régulières ne sont gélérament pas très adaptées pour traiter du HTML, en-dehors des cas simples du type supprimer toutes les balises, car le HTML tout comme le XML n'appartiennent pas aux langages dits réguliers.
En particulier les notions d'imbrication, de début et de fin de balises n'existent pas vraiment.

Pour les cas les plus complexes, il faudra utiliser autre chose de plus approprié: XPath, moteur DOM, XSLT, XQuery, etc. IL existe forcément des bibliothèques qui implémentent ça dans vos langages favoris.
Merci de vos contributions; je vais les étudier, avec intérêt et attention.

Soit le php :

$signature = "développement<img src=\"$mabobine\" />".nommer( $auteur ) ;


Je veux que le title de la signature soit :
développement: Dagobert Leroy


Bien entendu, je pourrais l'inscrire "en dur". Mais je voudrais comprendre quelle expression rationnelle me permettrait de détecter les balises, img, et celle qui est dans
nommer( $auteur )
de même que toute balise xml.
a écrit :
<([^>]+>
a une parenthèse célibataire, et renvoie
a écrit :
Warning: preg_replace(): Unknown modifier ']' in /home/vol15_7/hebergratuit.net/heber_31275822/htdocs/MFRB/Parts/footer.part on line 27
a écrit :
<[^>]+>
sans parenthèse, renvoie
a écrit :
Warning: preg_replace(): Unknown modifier ']' in /home/vol15_7/hebergratuit.net/heber_31275822/htdocs/MFRB/Parts/footer.part on line 27
a écrit :
/(<.*?>)/g
renvoie
a écrit :
Warning: preg_replace(): Unknown modifier 'g' in /home/vol15_7/hebergratuit.net/heber_31275822/htdocs/MFRB/Parts/footer.part on line 27
Modérateur
Salut,

si ta string correspond à un truc du genre :
développement<img src="urlpath" />Dagobert Leroy

alors la regex :
<.*?>

sélectionne bien
<img src="urlpath" />

https://regexr.com/6jfmh

Pour taffer sur les regex j'utilise cet outil que je trouve merveilleux : https://regexr.com/
en dessous de ta regex tu peux mettre du texte libre pour tester plein de cas à la volée
encore en dessous tu as l'explication détaillée de ce que tu as écrit
et sur la gauche tu as toutes les explications / guides / regles / tips etc...
(<.*?>)

semble faire ce que j'attendais.

Le title est, donc :
preg_replace( "(<.*?>)", SPACE, $mefecit ) ;


Merci de toutes vos contributions ! Et bonne nuit.
Je reprends ce fil, pour signaler aux polyglottes qui ont suivi mon questionnement sur les expressions régulières permettant de détecter les balises XML, que j'ai écrit en JS la fonction suivante :
String.prototype._tag=function(){ return this.replace(/<[^>]*>/g,vide); }

Elle semble détaguer correctement.

Bonne soirée.