2010-10-08 5 views
0

Comment exclure un attribut de style d'une chaîne HTML avec des expressions régulières?Inverser la correspondance avec les expressions régulières

Par exemple, si nous avons la suite chaîne HTML en ligne:

<html><body style="background-color:yellow"><h2 style="background-color:red">This is a heading</h2><p style="background-color:green">This is a paragraph.</p></body></html>

Quand appliquer la correspondance d'expression régulière, le résultat apparié devrait ressembler à:

<html><body ><h2 >This is a heading</h2><p >This is a paragraph.</p></body></html>

Répondre

0

Il vous suffit de remplacer les balises de style avec rien, voici un exemple comment faire avec PHP:

$text = preg_replace('/\s+style="[^"]*"/', '', $text); 
0

Il est généralement répondu que les expressions regex dans la plupart des cas ne conviennent pas pour le HTML, vous devez donc fournir la langue dans laquelle vous envisagez d'implémenter ceci.

Cependant, une regex comme celui-ci remplacera la rubrique:

<h2\s+style="background-color:red"> 
// replace with 
<h2> 

Le regex pour l'étiquette de paragraphe est analogue (remplacer « h2 » par « p » et « rouge » avec « verte »).

1

Vous ne pouvez pas analyser HTML avec des expressions régulières, car HTML n'est pas régulier.

Bien sûr, vous pouvez couper les coins ronds à vos propres risques et périls, par exemple en recherchant style\s*=\s*"[^"]*" et en remplaçant que rien, mais qui supprimera toute occurence de style="anything" de votre texte.

Questions connexes