with strip_tags remove ejemplo allow php html5 htmlpurifier

php - strip_tags - Filtro HTML que cumple con HTML5



strip_tags wordpress (4)

¿Existe un enfoque simple para agregar un conjunto de reglas HTML5 para HTMLPurifier?

HP se puede configurar para reconocer nuevas etiquetas con:

// 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");

Sin embargo, esto es claramente un poco de trabajo. Dado que hay muchas nuevas etiquetas HTML5 y atributos que deben registrarse. Y los nuevos atributos globales deberían ser combinables incluso con las etiquetas HTML 4 existentes. (Es difícil juzgar a partir de los documentos cómo aumentar las reglas básicas). Entonces, ¿hay una estructura de matriz / formato de configuración más útil para alimentar la etiqueta + atributo + configuración de contexto nueva y actualizada (inline / block / empty / flow / ..) en HTMLPurifier?

# 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-*", ...

Y, por supuesto, no todas las nuevas etiquetas HTML5 son aptas para una asignación ilimitada. HTMLPurifier tiene que ver con el filtrado de contenido. La definición de las restricciones de valor es donde está. - <canvas> por ejemplo, puede no ser tan importante cuando aparece en el contenido del usuario. Porque es inútil en el mejor de los casos sin Javascript (que HP ya filtra). Pero otras etiquetas y atributos pueden ser indeseables; por lo que una estructura de configuración flexible es imprescindible para habilitar / deshabilitar etiquetas y sus atributos asociados.

( Supongo que debería actualizar algunas investigaciones ... ). Pero todavía no existe un compendio / especificación práctica (no, las DTD XML no lo son) que se adapta a una configuración de HP.

(Uh, y HTML5 ya no es un borrador).


Esta es la configuración de HTMLpurify para permitir etiquetas HTML más recientes.

Fuente: https://github.com/kennberg/php-htmlpurfier-html5

.

<?php /** * Load HTMLPurifier with HTML5, TinyMCE, YouTube, Video support. * * Copyright 2014 Alex Kennberg (https://github.com/kennberg/php-htmlpurifier-html5) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ require_once(LIB_DIR . ''third-party/htmlpurifier/HTMLPurifier.safe-includes.php''); function load_htmlpurifier($allowed) { $config = HTMLPurifier_Config::createDefault(); $config->set(''HTML.Doctype'', ''HTML 4.01 Transitional''); $config->set(''CSS.AllowTricky'', true); $config->set(''Cache.SerializerPath'', ''/tmp''); // Allow iframes from: // o YouTube.com // o Vimeo.com $config->set(''HTML.SafeIframe'', true); $config->set(''URI.SafeIframeRegexp'', ''%^(http:|https:)?//(www.youtube(?:-nocookie)?.com/embed/|player.vimeo.com/video/)%''); $config->set(''HTML.Allowed'', implode('','', $allowed)); // Set some HTML5 properties $config->set(''HTML.DefinitionID'', ''html5-definitions''); // unqiue id $config->set(''HTML.DefinitionRev'', 1); if ($def = $config->maybeGetRawHTMLDefinition()) { // http://developers.whatwg.org/sections.html $def->addElement(''section'', ''Block'', ''Flow'', ''Common''); $def->addElement(''nav'', ''Block'', ''Flow'', ''Common''); $def->addElement(''article'', ''Block'', ''Flow'', ''Common''); $def->addElement(''aside'', ''Block'', ''Flow'', ''Common''); $def->addElement(''header'', ''Block'', ''Flow'', ''Common''); $def->addElement(''footer'', ''Block'', ''Flow'', ''Common''); // Content model actually excludes several tags, not modelled here $def->addElement(''address'', ''Block'', ''Flow'', ''Common''); $def->addElement(''hgroup'', ''Block'', ''Required: h1 | h2 | h3 | h4 | h5 | h6'', ''Common''); // http://developers.whatwg.org/grouping-content.html $def->addElement(''figure'', ''Block'', ''Optional: (figcaption, Flow) | (Flow, figcaption) | Flow'', ''Common''); $def->addElement(''figcaption'', ''Inline'', ''Flow'', ''Common''); // http://developers.whatwg.org/the-video-element.html#the-video-element $def->addElement(''video'', ''Block'', ''Optional: (source, Flow) | (Flow, source) | Flow'', ''Common'', array( ''src'' => ''URI'', ''type'' => ''Text'', ''width'' => ''Length'', ''height'' => ''Length'', ''poster'' => ''URI'', ''preload'' => ''Enum#auto,metadata,none'', ''controls'' => ''Bool'', )); $def->addElement(''source'', ''Block'', ''Flow'', ''Common'', array( ''src'' => ''URI'', ''type'' => ''Text'', )); // http://developers.whatwg.org/text-level-semantics.html $def->addElement(''s'', ''Inline'', ''Inline'', ''Common''); $def->addElement(''var'', ''Inline'', ''Inline'', ''Common''); $def->addElement(''sub'', ''Inline'', ''Inline'', ''Common''); $def->addElement(''sup'', ''Inline'', ''Inline'', ''Common''); $def->addElement(''mark'', ''Inline'', ''Inline'', ''Common''); $def->addElement(''wbr'', ''Inline'', ''Empty'', ''Core''); // http://developers.whatwg.org/edits.html $def->addElement(''ins'', ''Block'', ''Flow'', ''Common'', array(''cite'' => ''URI'', ''datetime'' => ''CDATA'')); $def->addElement(''del'', ''Block'', ''Flow'', ''Common'', array(''cite'' => ''URI'', ''datetime'' => ''CDATA'')); // TinyMCE $def->addAttribute(''img'', ''data-mce-src'', ''Text''); $def->addAttribute(''img'', ''data-mce-json'', ''Text''); // Others $def->addAttribute(''iframe'', ''allowfullscreen'', ''Bool''); $def->addAttribute(''table'', ''height'', ''Text''); $def->addAttribute(''td'', ''border'', ''Text''); $def->addAttribute(''th'', ''border'', ''Text''); $def->addAttribute(''tr'', ''width'', ''Text''); $def->addAttribute(''tr'', ''height'', ''Text''); $def->addAttribute(''tr'', ''border'', ''Text''); } return new HTMLPurifier($config); }