.*?<\/script>)/is", $chaine, $js); $chaine = preg_replace("/(.*?<\/script>)/is", "", $chaine, $js); preg_match_all("/(.*?<\/noscript>)/is", $chaine, $njs); $chaine = preg_replace("/(.*?<\/noscript>)/is", "", $chaine, $njs); $njs = $njs[0]; $js = $js[0]; // preparation des lignes $chaine = preg_replace("/\n/", "", $chaine); $chaine = preg_replace("/\n\s*/", "\n", $chaine); $chaine = preg_replace("/(<.*?>)/", "\n\\1\n", $chaine); $chaine = preg_replace("/\n\n/", "\n", $chaine); $chaine = preg_replace("/\n\s*/", "\n", $chaine); $lignes = explode("\n", $chaine); $retour = ""; $i = 0; foreach ($lignes as $l){ $r = ""; // si c'est une balise if (ereg("^<.*>$", $l)){ // obtention du tag if (ereg(' ', $l)){ $tag = substr($l, 1, strpos($l, ' ')-1); $reste = htmlspecialchars(strstr(substr($l, 0, -1), ' ')); } else { $tag = substr($l, 1,-1); $reste = ""; } $tag = strtolower($tag); // etude des ouvrant/fermants if (ereg('^/', $tag)){ // cas d'une balise fermante if (in_array( substr($tag, 1), $tagsi)){ // cas d'une balise fermante a ignorer if ((substr($retour, -1) == "\n") && ($i > 0)){ $r .= str_repeat("$indent", $i);} $r .= "<$tag$reste>"; } else if (in_array(substr($tag, 1), $tags)){ // cas d'une balise fermante reconnue $i--; @$suivi[substr($tag, 1)]--; $r .= "\n"; if ($i>0) { $r .= str_repeat("$indent", $i);} $r .= "<$tag$reste>\n"; } else { // une balise inconnue if ((substr($retour, -1) == "\n") && ($i > 0)){ $r .= str_repeat("$indent", $i);} $r .= "<$tag$reste>"; } } else { // cas des balises ouvrantes if (in_array($tag, $tags)){ // cas d'une balise ouvrante reconnue $r .= "\n"; if ($i>0) { $r .= str_repeat("$indent", $i);} $r .= "<$tag$reste>\n"; $i++; @$suivi[$tag]++; } else if (in_array($tag, $tagsi)){ if ((substr($retour, -1) == "\n") && ($i > 0)){ $r .= str_repeat("$indent", $i);} $r .= "<$tag$reste>"; } else if ($tag == "ici_un_script") { // cas d'une balise ouvrante a ignorer $reste = substr($reste, 1); $script = htmlspecialchars(array_shift($$reste)); $r .= str_repeat("$indent", $i).preg_replace("/\n\s*/", "\n".str_repeat("$indent", $i+1), $script)."\n"; $r = preg_replace("/\n$indent(.*?)\n$/", "\n\\1\n", $r); } else { // cas d'une balise inconnue $r .= "\n"; if ($i>0) { $r .= str_repeat("$indent", $i);} $r .= "<$tag$reste>\n"; } } } else { // si c'est du texte brut if ((substr($retour, -1) == "\n") && ($i > 0)){ $r .= str_repeat("$indent", $i);} $r .= htmlspecialchars($l); } $retour .= $r; } // toilettage final $retour = preg_replace("/\n( )+\n/", "\n", $retour); $retour = preg_replace("/\n+/", "\n", $retour); $retour = preg_replace("/\n+/", "\n", $retour); $retour = preg_replace("/<!--<\/font><\/b>(.*?)-->/i", "<--\\1-->", $retour); $retour = preg_replace("/>( )+/", ">", $retour); // cas des commentaires $retour = preg_replace("/"(.*?)"/is", ""\\1"" , $retour); // la page elle meme $out = "
";
	$out .= $retour;
	$out .=  "

"; // bilan des balises qui ne sont pas suffisamment utilisees while(list($cle, $val) = each($suivi)){ if ($val > 0) { $out .= "<$cle> manque $val fois
\n"; } else if ($val < 0) { $out .= "<$cle> est ".abs($val)." fois en trop
\n"; } } // on retourne le tout pour affichage return $out."\n"; } ?>