Foros del Web » Programando para Internet » PHP »

Eliminar carácteres html con php

Estas en el tema de Eliminar carácteres html con php en el foro de PHP en Foros del Web. Hola a todos, Tengo un problema con un código a la hora de eliminar unos carácteres en html. He probado con strip_tags pero no funciona ...
  #1 (permalink)  
Antiguo 04/12/2011, 20:05
 
Fecha de Ingreso: abril-2009
Mensajes: 233
Antigüedad: 15 años, 8 meses
Puntos: 5
Eliminar carácteres html con php

Hola a todos,

Tengo un problema con un código a la hora de eliminar unos carácteres en html. He probado con strip_tags pero no funciona y no se me ocurre nada. A ver si me pueden orientar un poco porque ando perdido.

El código con el que trabajo es el siguiente:

Código PHP:
<?php
$url 
"feed.xml";
$contenido_xml "";
if(
$d fopen($url"r")){
  while (
$auxfgets($d1024)){
    
$contenido_xml .= $aux;
  }
  
fclose($d);
}else{
  echo 
"No se pudo abrir el XML";
}
$xml simplexml_load_string($contenido_xml);

$i 1;


for(
$i=0$i<count($xml->ad); $i++){
$id $xml->ad[$i]->id;
$titulo $xml->ad[$i]->title;
$content $xml->ad[$i]->content;
$precio $xml->ad[$i]->price;
$vendedor $xml->ad[$i]->dealer;
$provincia $xml->ad[$i]->city_area;
$poblacion $xml->ad[$i]->city;
$marca $xml->ad[$i]->make;
$modelo $xml->ad[$i]->model;
$car_type $xml->ad[$i]->car_type;
$color $xml->ad[$i]->color;
$ano $xml->ad[$i]->year;
$km $xml->ad[$i]->mileage;
$puertas $xml->ad[$i]->doors;
$motor $xml->ad[$i]->engine_size;
$combustible $xml->ad[$i]->fuel;
$caballos $xml->ad[$i]->power;
$fecha $xml->ad[$i]->date;



echo 
$id;
echo 
strip_tags($content);
}


?>
Saludos y gracias!
  #2 (permalink)  
Antiguo 04/12/2011, 22:13
Avatar de ElSiniestro  
Fecha de Ingreso: diciembre-2011
Ubicación: Ibagué
Mensajes: 115
Antigüedad: 13 años
Puntos: 23
Respuesta: Eliminar carácteres html con php

para eso usa trim()
  #3 (permalink)  
Antiguo 04/12/2011, 22:22
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 17 años, 3 meses
Puntos: 188
Respuesta: Eliminar carácteres html con php

Cita:
Iniciado por ElSiniestro Ver Mensaje
para eso usa trim()
¿Cómo usarías trim para hacer esto?
Que no el charlist del segundo parámetro acepta solo una string, donde esta string es convertida a un array de caracteres y con la recursividad de la función elimina las coincidencias con estos caracteres.
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.
  #4 (permalink)  
Antiguo 04/12/2011, 23:21
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 5 meses
Puntos: 1567
Respuesta: Eliminar carácteres html con php

en todo caso,
Código PHP:
Ver original
  1. echo htmlentities($content);

pero no sé, habría que estudiar la estructura de tu xml.

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #5 (permalink)  
Antiguo 05/12/2011, 04:36
 
Fecha de Ingreso: abril-2009
Mensajes: 233
Antigüedad: 15 años, 8 meses
Puntos: 5
Respuesta: Eliminar carácteres html con php

Así es como leo el xml ahora mismo con los carácteres html:




Con htmlentities ya he probado y no se soluciona nada, me queda así:


  #6 (permalink)  
Antiguo 05/12/2011, 08:30
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 17 años, 3 meses
Puntos: 188
Respuesta: Eliminar carácteres html con php

Cita:
Con htmlentities ya he probado y no se soluciona nada, me queda así:
Así es como tiene que quedar amigo =D. Cuando lo muestres dentro de un documento HTML el usuario que lo visualice a través de un navegador verá literalmente "el código HTML" en lugar de que este sea interpretado.

Si quieres quitar por completo etiquetas HTML strip_tags es la opción. Pero porque dices que no te funciona???

Que parte es la que no te funciona?

---------------
Otra cosa que me acabo de dar cuenta es que la pregunta está enfocada a XML, en éste caso no creo que quitar el HTML sea el primer paso, mas bien es obtener el texto llano de los atributos o valores que definen las etiquetas del documento XML. Con DOM es una buena forma. Algo más sencillo y "prefabricado" ( ) está simpleXML se trata de una librería que hace todo el trabajo.

Con DOM también es fácil, con simpleXML un poco más. Los documentos XML están pensados para compartir información de la forma más simple posible.

Yo te recomiendo que obtengas lo que necesitas de los XML de la forma que te comenté y luego si quieres los imprimes en un documento de texto llano o lo muestras en pantalla sin formato. etc.... puesto todo este texto no tendrá HTML.

Saludos.
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.
  #7 (permalink)  
Antiguo 05/12/2011, 08:35
 
Fecha de Ingreso: abril-2009
Mensajes: 233
Antigüedad: 15 años, 8 meses
Puntos: 5
Respuesta: Eliminar carácteres html con php

El archivo xml lo leo con "simplexml_load_file()". El problema es que cuando voy a introducir los datos leidos en la base de datos me los guarda con todas las etiquetas html que me han enviado en el xml como <table>, <border>, <p>,... y esto es lo que realmente me molesta y quiero eliminar. Para esto esta la función "strip_tags" pero ésta no funciona no se porque... Anteriormente puse el código donde muestro como leo el xml y luego intento eliminar estso caracteres pero no los elimina, el código que utilizo es este:

Código PHP:
<?php
$url 
"feed.xml";
$contenido_xml "";
if(
$d fopen($url"r")){
  while (
$auxfgets($d1024)){
    
$contenido_xml .= $aux;
  }
  
fclose($d);
}else{
  echo 
"No se pudo abrir el XML";
}
$xml simplexml_load_string($contenido_xml);

$i 1;


for(
$i=0$i<count($xml->ad); $i++){
$id $xml->ad[$i]->id;
$titulo $xml->ad[$i]->title;
$content $xml->ad[$i]->content;
$precio $xml->ad[$i]->price;
$vendedor $xml->ad[$i]->dealer;
$provincia $xml->ad[$i]->city_area;
$poblacion $xml->ad[$i]->city;
$marca $xml->ad[$i]->make;
$modelo $xml->ad[$i]->model;
$car_type $xml->ad[$i]->car_type;
$color $xml->ad[$i]->color;
$ano $xml->ad[$i]->year;
$km $xml->ad[$i]->mileage;
$puertas $xml->ad[$i]->doors;
$motor $xml->ad[$i]->engine_size;
$combustible $xml->ad[$i]->fuel;
$caballos $xml->ad[$i]->power;
$fecha $xml->ad[$i]->date;



echo 
$id;
echo 
strip_tags($content);
}


?>
  #8 (permalink)  
Antiguo 05/12/2011, 10:25
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 5 meses
Puntos: 1567
Respuesta: Eliminar carácteres html con php

@arquidea
me resulta un poco complejo tu ejemplo, decis que usas simplexml_load_file(), pero yo veo $xml = simplexml_load_string($contenido_xml);
las imágenes no son muy claras, y si tu xml incluye contenido html, este deberia ser pasado con CDATA. no uso mucho xml, pero te paso un ejemplo sencillo para ue lo analices

el feed.xml

Código XML:
Ver original
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <notas>
  3. <nota>
  4.     <autor>luis rodriguez</autor>
  5.     <fecha>05/12/2011 12:21:59</fecha>
  6.     <titulo>ejemplo de xml parser</titulo>
  7.     <contenido><![CDATA[ <p>este es el contenido de rodriguez</p> ]]></contenido>
  8. </nota>
  9. <nota>
  10.     <autor>juan pérez</autor>
  11.     <fecha>05/12/2011 12:21:59</fecha>
  12.     <titulo>ejemplo de xml parser</titulo>
  13.     <!-- en esta entrada no se usa CDATA -->
  14.     <contenido><p>este es el contenido de pérez</p></contenido>
  15.     <!-- fin entrada sin CDATA -->
  16. </nota>
  17. <nota>
  18.     <autor>roberto gonzalez</autor>
  19.     <fecha>05/12/2011 12:21:59</fecha>
  20.     <titulo>ejemplo de xml parser</titulo>
  21.     <contenido><![CDATA[ <p>este es el contenido de gonzalez</p> ]]></contenido>
  22. </nota>
  23. <nota>
  24.     <autor>victor martinez</autor>
  25.     <fecha>05/12/2011 12:21:59</fecha>
  26.     <titulo>ejemplo de xml parser</titulo>
  27.     <contenido><![CDATA[ <p>este es el contenido de martinez</p> ]]></contenido>
  28. </nota>
  29. </notas>

el leerxml.php
Código PHP:
Ver original
  1. <?php
  2. $sx = simplexml_load_file('feed.xml');
  3. $salida ="";
  4. $htmlxml = "";
  5. foreach($sx->nota as $item){
  6. $autor= $item->autor;
  7. $contenido= $item->contenido;
  8. $fecha= $item->fecha;
  9. $titulo= $item->titulo;
  10. if($contenido == ""){
  11. $contenido .= "xxxxxx";
  12. }else{
  13. $htmlxml = $contenido;
  14. }
  15. $salida .= "Autor: " . $autor . "<br><b>$titulo</b> [$fecha]<br>" . strip_tags($contenido) . "<hr>";
  16. }
  17. echo $salida;
  18. echo "<p>El contenido sin striptags en un textarea (el del último registro)</p>";
  19. echo "<textarea rows='5' cols='30'>$htmlxml</textarea>";
  20. ?>

como ves le hice un agregado para que se visualice mejor.
En conclusión, el strip_tags() funciona, siempre que tu XML sea correcto
Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #9 (permalink)  
Antiguo 05/12/2011, 10:41
 
Fecha de Ingreso: abril-2009
Mensajes: 233
Antigüedad: 15 años, 8 meses
Puntos: 5
Respuesta: Eliminar carácteres html con php

Hola Emprear, tienes razón, quería decir simplexml_load_sctring().

He probado el código que tu me has pasado y funciona perfecto, pero cuando le meto el contenido de mi feed me lo sigue expulsando con los caracteres html...
De todas formas no os preocupéis seguiré probando y si lo suluciono no dudéis que diré en que me equivocaba. Si no consigo solucionarlo les diré que modifiquen el feed y no incluyan caracteres html.
  #10 (permalink)  
Antiguo 05/12/2011, 11:05
Avatar de ElSiniestro  
Fecha de Ingreso: diciembre-2011
Ubicación: Ibagué
Mensajes: 115
Antigüedad: 13 años
Puntos: 23
Respuesta: Eliminar carácteres html con php

Cita:
Iniciado por iovan Ver Mensaje
¿Cómo usarías trim para hacer esto?
Que no el charlist del segundo parámetro acepta solo una string, donde esta string es convertida a un array de caracteres y con la recursividad de la función elimina las coincidencias con estos caracteres.

Sorry anoche estaba casi que dormido respondiendo a esta pregunta :P
  #11 (permalink)  
Antiguo 05/12/2011, 20:35
 
Fecha de Ingreso: abril-2009
Mensajes: 233
Antigüedad: 15 años, 8 meses
Puntos: 5
Respuesta: Eliminar carácteres html con php

Hola de nuevo! al fin casi a las 4 de la madrugada lo he podido solucionar, y adivinar donde he encontrado la solución...en los mismos forosdelweb. Dejo el enlace para quien le sirva:

http://www.forosdelweb.com/f18/quita...o-html-319379/

Etiquetas: etiquetas, html, strip_tags
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 07:11.