javascript - remove - jQuery(casi) equivalente de strip_tags de PHP()
remove html tags from string typescript (9)
ACTUALIZAR
Utilice lo siguiente para quitar etiquetas mientras mantiene el contenido
$(''#text'').find(''p'').contents().unwrap();
Esto quitará la etiqueta p
donde p
es un elemento secundario de ''#text''.
Ver ejemplo de trabajo en http://jsfiddle.net/YWCsH/
¿Hay una versión jQuery de esta función?
string strip_tags (string $ str [, string $ allowable_tags])
quite todas las etiquetas y contenido dentro de ellas de una cadena, excepto las definidas en la cadena de etiquetas permitidas.
me gusta:
var stripped = strip_tags($(''#text'').html(), ''<p><em><i><b><strong><code>'');
de:
<div id="text">
<p> paragraph </p>
<div> should be stripped </div>
</div>
Esto funcionó para mí:
function strip_tags(str) {
str = str.toString();
return str.replace(/<//?[^>]+>/gi, '''');
}
Incluso si se trata de un hilo viejo, creo que podría ser útil para aquellos que todavía están buscando una respuesta.
La función Locutus.io parece ser la mejor solución:
function strip_tags (input, allowed) {
allowed = (((allowed || '''') + '''').toLowerCase().match(/<[a-z][a-z0-9]*>/g) || []).join('''')
var tags = /<//?([a-z][a-z0-9]*)/b[^>]*>/gi
var commentsAndPhpTags = /<!--[/s/S]*?-->|</?(?:php)?[/s/S]*?/?>/gi
return input.replace(commentsAndPhpTags, '''').replace(tags, function ($0, $1) {
return allowed.indexOf(''<'' + $1.toLowerCase() + ''>'') > -1 ? $0 : ''''
})
}
Ejemplo 1:
strip_tags(''<p>Kevin</p> <br /><b>van</b> <i>Zonneveld</i>'', ''<i><b>'')
devuelve 1: ''Kevin <b>van</b> <i>Zonneveld</i>''
Ejemplo 2:
strip_tags(''<p>Kevin <img src="someimage.png" onmouseover="someFunction()">van <i>Zonneveld</i></p>'', ''<p>'')
devuelve 2: ''<p>Kevin van Zonneveld</p>''
Ejemplo 3:
strip_tags("<a href=''http://kvz.io''>Kevin van Zonneveld</a>", "<a>")
devuelve 3: "<a href=''http://kvz.io''>Kevin van Zonneveld</a>"
Ejemplo 4:
strip_tags(''1 < 5 5 > 1'')
devuelve 4: ''1 < 5 5 > 1''
Ejemplo 5:
strip_tags(''1 <br/> 1'')
devuelve 5: ''1 1''
Ejemplo 6:
strip_tags(''1 <br/> 1'', ''<br>'')
devuelve 6: ''1 <br/> 1''
Ejemplo 7:
strip_tags(''1 <br/> 1'', ''<br><br/>'')
devuelve 7: ''1 <br/> 1''
No es una respuesta real, pero una palabra de precaución (dependiendo de lo que intentes hacer con esto):
En mi humilde opinión, en casi todos los casos, la desinfección de entrada debe hacerse en el lado del servidor (en este caso, utilizando las funciones nativas de PHP). Si su intención es reemplazar la funcionalidad de PHP con la funcionalidad del lado del cliente, le aconsejaría encarecidamente que no lo haga.
¿Por qué?
El hecho de que esté creando un sitio web no significa que:
- Sus usuarios tienen JavaScript habilitado. Si no envía su formulario estrictamente a través de una secuencia de comandos (utilizando los botones de envío, etc.), todavía permite a los usuarios enviar datos no válidos (como etiquetas <script>, etc.)
- Las solicitudes en realidad no pueden ser iniciadas por un navegador, eludiendo cualquier sanitización de entrada basada en JS.
Una vez más, en realidad no responde su pregunta, pero una palabra de advertencia en función de dónde podría dirigirse en función de su pregunta :)
Para eliminar solo las etiquetas, y no el contenido , que es cómo se comporta strip_tags()
PHP, puedes hacer:
var whitelist = "p"; // for more tags use the multiple selector, e.g. "p, img"
$("#text *").not(whitelist).each(function() {
var content = $(this).contents();
$(this).replaceWith(content);
});
Para eliminar todas las etiquetas, podría usar:
var StrippedString = OriginalString.replace(/(<([^>]+)>)/ig,"");
Código de: etiquetas HTML de tira en JavaScript
Para eliminar todas las etiquetas, puede usar
$(''<div>Content</div>'').text()
Puede probar esta, probablemente la mejor solución: http://phpjs.org/functions/strip_tags/
Solo usa una expresión regular:
html.replace( /<.*?>/g, '''' );
Hecho. :)
Para la etiqueta p
:
html.replace( /<[^p].*?>/g, '''' );
Para otras etiquetas, se vuelve más complicado.