57 votes

Filtre HTML compatible HTML5

Est-il un filtre HTML HTML Purificateur qui est en HTML5 compatible?

bounty

Question récurrente, pas suffisamment documentés encore. Aucun des autres HTML de nettoyage de solutions pour PHP est à l'entière charge du HTML5 encore. HTMLPurifier est probablement la meilleure option. Mais l'artisanat englobante de configuration pour la prise en charge du HTML5 n'est pas si facile. Donc la question est, ce qui est une façon sensée pour le faire?

HP peut être configuré pour reconnaître le nouveau avec des étiquettes:

// setup configurable HP instance
$config = HTMLPurifier_Config::createDefault();
$config->set('HTML.DefinitionID', 'html5 draft');
$config->set('HTML.DefinitionRev', 1);
$config->set('Cache.DefinitionImpl', null); // no caching
$def = $config->getHTMLDefinition(true);

// add a new tag
$form = $def->addElement(
  'article',   // name
  'Block',     // content set
  'Flow',      // allowed children
  'Common',    // attribute collection
  array(       // attributes
  )
);

// add a new attribute
$def->addAttribute('a', 'contextmenu', "ID");

C'est clairement un peu de travail, car il ya beaucoup de nouvelles balises HTML5 et les attributs à ajouter. Et de nouveaux attributs globaux doivent être enregistrés auprès de chaque html4 tag (est-il un moyen facile de faire cela?). Donc évidemment, il devrait être utile format/structure du tableau de flux de configuration y compris l'étiquette et les informations de contexte (inline/bloc/vide/flux/..).

Et bien sûr, pas toutes les nouvelles balises HTML5 sont aptes à être autorisée sans restriction. HTMLPurifier est tout au sujet de filtrage de contenu, et de ne pas compromettre la dangerosité de balises et d'attributs doivent être pris en considération. <canvas> par exemple, pourrait ne pas être que grand d'une affaire lorsqu'il apparaît dans le contenu de l'utilisateur, comme c'est inutile, au mieux, sans Javascript (HP déjà filtre). Mais d'autres balises et attributs peut être indésirable; ainsi, une configuration flexible structure est impératif, de sorte qu'il est facile d'activer/désactiver les balises et leurs attributs.

Un autre subproblem ici est de trouver un utilisable liste des nouveaux HTML5 choses à ajouter:

- http://simon.html5.org/html-elements

- http://www.w3.org/TR/html5-diff/#new-elements

- http://www.w3.org/TR/html5-diff/#new-attributes

(Et oui, je pense que nous sommes tous conscients que le HTML5 est encore un projet. Il est toutefois aussi important d'être conscient de qui il est déjà en cours d'utilisation quand même.)

# mostly confused about how to extend existing tags:
$def->addAttribute('input', 'type', "...|...|...");

# or how to allow data-* attributes (if I actually wanted that):
$def->addAttribute("data-*", ...

J'espère que le troisième prime +500 est assez pour enflammer quelques configuraton de codage ici, ou quelqu'un d'enquêter sur la manière d'aborder ce intelligemment.

12voto

Chris Points 883

L'extension php tidy peut être configurée pour reconnaître les balises html5. http://tidy.sourceforge.net/docs/quickref.html#new-blocklevel-tags

4voto

braindamage Points 741

im en utilisant un correctif pour wordpress, mais peut-être cela peut vous aider aussi (au moins pour le tableau de la partie)

http://nicolasgallagher.com/using-html5-elements-in-wordpress-post-content/

http://hybridgarden.com/blog/misc/adding-html5-capability-to-wordpress/

aussi:

http://code.google.com/p/html5lib/ Python et PHP implémentations de un analyseur HTML basé sur le WHATWG spécification HTML5 pour un maximum de compatibilité avec les principaux navigateurs web de bureau.

0voto

Evan Mulawski Points 28536

Gallery Role dispose d'un analyseur HTML5 expérimental basé sur HTMLPurifier:

https://github.com/gallery/gallery3-vendor/blob/master/htmlpurifier/modified/HTMLPurifier/Lexer/PH5P.php

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X