Maîtriser les preg peut se révéler ardu. Voici donc toute une série d’exemples pris de cas réels. L’objectif est de modifier un code html.
Suppression des commentaires conditionnels :
$texte = preg_replace('`<!--\[if([^\[]+)<!\[endif\]-->`','',$texte);
Suppression de diverses balises :
$texte = preg_replace('`<style.*>([^\[]+)</style>`','',$texte);
$texte = preg_replace('`<meta.*>([^\[]+)</meta>`','',$texte);
$texte = preg_replace('`<o:[^>]*>.*</o:[^>]*>`','',$texte);
$texte = preg_replace('`<link.*'.'/>`','',$texte);
$texte = preg_replace("`<st1.*>([^<]*)</st1[^>]*>`", "\\1", $texte);
Même chose en plus complet :
$texte = preg_replace("`([\r\t\n\ ]*)<p[^>]*>([\r\t\n\ ]*)</p>([\r\t\n\ ]*)`", '', $texte);
Les lignes vides :
$texte = preg_replace("`<p[^>]*> </p>`", '', $texte);
Suppression des styles ou balises accrochés aux balises :
$texte = preg_replace('`<table(.*)style=\"(.*)\"(.*)>`','<table \\1 \\3>',$texte);
$texte = preg_replace('`<tr(.*)style=\"(.*)\"(.*)>`','<tr \\1 \\3>',$texte);
$texte = preg_replace('`<td(.*)style=\"(.*)\"(.*)>`','<td \\1 \\3>',$texte);
$texte = preg_replace('`<table(.*)height=\"(.*)\"(.*)>`','<table \\1 \\3>',$texte);
$texte = preg_replace('`<tr(.*)height=\"(.*)\"(.*)>`','<tr \\1 \\3>',$texte);
$texte = preg_replace('`<td(.*)height=\"(.*)\"(.*)>`','<td \\1 \\3>',$texte);
Suppression de tous ce qui est accroché à une balise (style et autre) :
$texte = preg_replace("`<p[^>]*>(.*)</p>`", '<p>\\1</p>', $texte);
Modifie les balises p et span en forcant un margin, padding :
$texte = preg_replace("`<p[^>]*>(.*)</p>`", '<p style="padding:0px;margin:0px;">\\1</p>', $texte);
$texte = preg_replace("`<span[^>]*>(.*)</span>`", '<span style="padding:0px;margin:0px;">\\1</span>', $texte);
Remplace les p par des tables :
$texte = preg_replace("`<p[^>]*>(.*)</p>`", '<table><tr><td style="padding:0px;margin:0px;text-align:justify;">\\1</td></tr></table>', $texte);
Supprime tous les style :
$texte = preg_replace("`style=\"(.*)"(.*)".*\"`", '', $texte);
Remplace les span multiples par un seul :
// <span><span><span><span><span><span><span><span><span><span> => <span>
$texte = preg_replace("`(<span>)+`", '<span>', $texte);
// </span></span></span></span></span></span></span></span></span> => </span>
$texte = preg_replace("`(</span>)+`", '</span>', $texte);
|