Foros del Web » Programando para Internet » PHP »

Eliminar etiquetas html

Estas en el tema de Eliminar etiquetas html en el foro de PHP en Foros del Web. Buenas ... Existe alguna función que me permita eliminar etiquetas HTML? .. Algo parecido a la función strip_tags , pero en vez de pasarle por ...
  #1 (permalink)  
Antiguo 17/03/2008, 14:20
Avatar de Jossephb  
Fecha de Ingreso: marzo-2007
Ubicación: Medellin
Mensajes: 24
Antigüedad: 17 años, 1 mes
Puntos: 0
Eliminar etiquetas html

Buenas ...

Existe alguna función que me permita eliminar etiquetas HTML? .. Algo parecido a la función strip_tags, pero en vez de pasarle por parametros las etiquetas que no deben eliminarse, pasarle más bien las etiquetas que no quiero que se muestren.

Saludos...
  #2 (permalink)  
Antiguo 17/03/2008, 14:40
Avatar de RoggerElfo  
Fecha de Ingreso: enero-2008
Ubicación: En la ciudad de los Reyes LIMA !
Mensajes: 121
Antigüedad: 16 años, 3 meses
Puntos: 2
Re: Eliminar etiquetas html

recuerdo que una vez lo hize con expresiones regulares ... busca en internet .. siempre hay un friki que lo hace
  #3 (permalink)  
Antiguo 17/03/2008, 14:45
Avatar de RoggerElfo  
Fecha de Ingreso: enero-2008
Ubicación: En la ciudad de los Reyes LIMA !
Mensajes: 121
Antigüedad: 16 años, 3 meses
Puntos: 2
Re: Eliminar etiquetas html

Mas o menos algo como esto .. si funciona

Código PHP:
    while($row mysql_fetch_array($rs)) 
            {   
                        
// $documento debe contener un documento HTML.
                        // Esto remueve las etiquetas HTML, secciones javacript
                        // y espacios en blanco. Tambien convierte algunas
                        // entidades HTML comunes a sus equivalentes en texto.
                        
$busqueda = array ('@<script[^>]*?>.*?</script>@si'// Remover javascript
                                         
'@<[\/\!]*?[^<>]*?>@si',          // Remover etiquetas HTML
                                         
'@([\r\n])[\s]+@',                // Remover espacios en blanco
                                         
'@&(quot|#34);@i',                // Reemplazar entidades HTML
                                         
'@&(amp|#38);@i',
                                         
'@&(lt|#60);@i',
                                         
'@&(gt|#62);@i',
                                         
'@&(nbsp|#160);@i',
                                         
'@&(iexcl|#161);@i',
                                         
'@&(cent|#162);@i',
                                         
'@&(pound|#163);@i',
                                         
'@&(copy|#169);@i',
                                         
'@&#(\d+);@e');                    // evaluar como php
                        
                        
$reemplazar = array ('',
                                          
'',
                                          
'\1',
                                          
'"',
                                          
'&',
                                          
'<',
                                          
'>',
                                          
' ',
                                          
chr(161),
                                          
chr(162),
                                          
chr(163),
                                          
chr(169),
                                          
'chr(\1)');
                        
                    
$texto preg_replace($busqueda$reemplazar$row["contenido"]);

                    
$posicion strpos($texto$busca);
                    
$parte substr($texto,$inicio,200); 
  #4 (permalink)  
Antiguo 17/03/2008, 15:07
Avatar de hgp147  
Fecha de Ingreso: diciembre-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 980
Antigüedad: 17 años, 4 meses
Puntos: 36
Re: Eliminar etiquetas html

Hola Jossephb. Mirá este link http://ar.php.net/strip_tags (Disculpa no había leido todo tu post, en realidad lei solo el título)
__________________
Spread Firefox | Download Day 2008
¡Únete en nuestra misión para alcanzar el Record Guinness al software más descargado en 24 horas! http://www.spreadfirefox.com/es-ES/worldrecord/

Última edición por hgp147; 17/03/2008 a las 15:09 Razón: Equivocación
  #5 (permalink)  
Antiguo 17/03/2008, 15:18
Avatar de Jossephb  
Fecha de Ingreso: marzo-2007
Ubicación: Medellin
Mensajes: 24
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Eliminar etiquetas html

Gracias por tu respuesta RoggerElfo, pero eso que me dices es mas o menos lo que hace la funcion strip_tags que elimina todo el codigo php y html, y por parametros le puedo indicar que etiquetas si quiero que muestre:

Ejemplo de php.net
Código PHP:
  <?php
$texto 
'<p>Parrafo de prueba.</p><!-- Comentario --> Mas texto';
echo 
strip_tags($texto);
echo 
"\n";

// Se permite la etiqueta <p>
echo strip_tags($texto'<p>');
?>
Lo que quiero hacer es que solo no me muestre algunas etiquetas html, lo cual podría hacer con la función strip_tags(), pero le tendría que pasar por parametros un monton de etiquetas que si quisiera que se mostraran.

Mas bien, algo que trabaje como a la inversa de strip_tags().

Saludos ...
  #6 (permalink)  
Antiguo 17/03/2008, 15:19
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Eliminar etiquetas html

Siempre es bueno revisar los comentarios dejados en el manual de PHP. Si revisas el manual de la función strip_tags() (que hace exactamente lo que quieres pero al revés), y te vas a leer los comentarios dejados, verás que hay más de una solución posteada a tu problema.

Código PHP:
# http://www.php.net/manual/es/function.strip-tags.php#76045
function strip_selected_tags($text$tags = array())
{
    
$args func_get_args();
    
$text array_shift($args);
    
$tags func_num_args() > array_diff($args,array($text))  : (array)$tags;
    foreach (
$tags as $tag){
        while(
preg_match('/<'.$tag.'(|\W[^>]*)>(.*)<\/'$tag .'>/iusU'$text$found)){
            
$text str_replace($found[0],$found[2],$text);
        }
    }
 
    return 
preg_replace('/(<('.join('|',$tags).')(|\W.*)\/>)/iusU'''$text);
}
 
# USO
 
// Borrar los tags <b></b> y <a></a>
 
$str "Hola <b>Mundo</b>, este es <a href=\"http://www.google.com\">mi</a> primer <i>script</i>";
 
echo 
strip_selected_tags($str"b""a"); 
Saludos,
  #7 (permalink)  
Antiguo 18/03/2008, 17:00
Avatar de Jossephb  
Fecha de Ingreso: marzo-2007
Ubicación: Medellin
Mensajes: 24
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Eliminar etiquetas html

Gracias okram por el script y la recomendación. Eso era.

Saludos.
  #8 (permalink)  
Antiguo 10/06/2008, 07:51
Avatar de MoDoRrO  
Fecha de Ingreso: septiembre-2005
Ubicación: Php+Flash+AS
Mensajes: 1.072
Antigüedad: 18 años, 7 meses
Puntos: 12
Respuesta: Eliminar etiquetas html

a mi me sale error =(

Código PHP:
WarningCompilation failedthis version of PCRE is not compiled with PCRE_UTF8 support at offset 4 in c:apachehtdocstags.php on line 10

Warning
Compilation failedthis version of PCRE is not compiled with PCRE_UTF8 support at offset 4 in c:apachehtdocstags.php on line 10

Warning
Compilation failedthis version of PCRE is not compiled with PCRE_UTF8 support at offset 1245104 in c:apachehtdocstags.php on line 15 
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:52.