Eliminer les fautes de validité w3c courantes.

Soyez le premier à donner votre avis sur cette source.

Snippet vu 7 882 fois - Téléchargée 16 fois

Contenu du snippet

Cette source vous permettra de corriger automatiquement les erreurs de fermeture des balises uniques et l'oubli du doctype pour les rendre valides au normes W3C. Ici la source est remplie d'une page d'exemple que vous devrez remplacer par votre page, en mettant le premier bout de php au début de chacune et en terminant toutes vos pages par <? ob_end_flush; ?> Pour qu'une partie de votre page ne soit pas modifié entourez-la de deux balises <!--sans-validation--> (paramètre modifiable dans la décclaration de $delimiter)

Source / Exemple :


<?
function validw3c($buffer)
{
    $delimiter='<!--sans-validation-->';
    $extract=explode($delimiter,$buffer);
    foreach($extract as $key=>$piece) if($key%2==0)
    {
        $ci=array('#<((img|br|link|hr|meta)([^>])*)/>#','#<((img|br|link|hr|meta)([^>])*[^/>])>#','#<(img|br|link|hr|meta)>#','#(\s){2,}/>#');
        $re=array('<$1 />','<$1 />','<$1 />',' />');
        $result.=preg_replace($ci,$re,$piece);
    }
    else $result.=$piece;
    if(false===strpos($result,'<!DOCTYPE')) {
    $result='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
'.$result;  }
    return $result;
}
ob_start("validw3c");
?>
<html>
<head>
<title>Valide</title>
<link type="xml">
<meta content="Bla bla">
</head>
<body>
<h1>Page de test</h1>
<br>
<img src="ceci" alt="Rien"><br>
<img src="celà" alt="Rien"/>
<!--sans-validation-->
<br>
<!--sans-validation-->
<br >
<br />
</body>
</html>
<?
ob_end_flush();
?>

Conclusion :


Vous pouvez donc maintenant vous dispenser de doctype et coder avec des <br> ou <meta> sans vous soucier de votre validité en incluant simplement ce code.

Je rajouterais surement d'autres corrections comme par exemple la transformation des attributs interdits (border, align, name etc.) en style CSS.

A voir également

Ajouter un commentaire

Commentaires

audayls
Messages postés
373
Date d'inscription
samedi 9 juillet 2005
Statut
Membre
Dernière intervention
11 août 2008

Aloha tout le monde ! Retour de vacance c'est le moment de reprendre les bonnes habitudes XD

@jdalton42 : Il faut accepter les critiques car celà permet de s'améliorer, d'autant plus que les remarques de coucou747 sont constructives et permettent de progresser.

@Dark_Genova "je trouve cette source bien plus utile qu'une source du type http://www.phpcs.com/codes/MD5-RELATION-RECIPROQUE_42416.aspx qui ne sert strictement à rien et exploite le PHP à des fins pour lesquels il n'est pas fait." : Si nous nous exploitions uniquement PHP pour ces premières fonctions, nous l'utiliserions que pour des Forums et pour des Livres d'or... Il est justement très interessant justement d'aller plus loin et de "pousser la bête" XD

Sinon que dire... C'est vrai que ce n'est que 20 lignes mais une vrai correction demanderai beaucoup trop de temps pour être générée de la sorte. Alors je suis de l'avis de "coucou747" et de "TheSin" : ce code est plus un snippet et je suis également de l'avis de "Kishkaya" pour porter en PHP un validateur W3C (je trouve l'idée pas mal je vais m'y mettre à mon retour ^^)
TheSin
Messages postés
331
Date d'inscription
mardi 12 novembre 2002
Statut
Membre
Dernière intervention
10 février 2009

a bon ? moi j'avais compris pourtant ... (la preuve avec mon post qui répondait au tient ^^)
coucou747
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
30
quand je disais "a part ca, bah t'as que 20 lignes de php..." je parlais du fait que ca ne constitue pas vraiment une source mais plutot un snippet... je poses peut-etre trop de sous entendus...
kishkaya
Messages postés
365
Date d'inscription
samedi 26 juin 2004
Statut
Membre
Dernière intervention
17 avril 2008

Ca s'est simpa.
Mais bon, ca sert pas a grand chose de faire du php si t'as un servlet a côté.
Il faudrait tenter de le porter en php...=)
TheSin
Messages postés
331
Date d'inscription
mardi 12 novembre 2002
Statut
Membre
Dernière intervention
10 février 2009

@kishkaya : en java, oui il est open source et gratuit ;-)
on peut même l'installer sur son serveur tomcat si on veut :-)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.