Foros del Web » Programando para Internet » PHP »

str_replace

Estas en el tema de str_replace en el foro de PHP en Foros del Web. Hola todos. Estoy usando simplepie para parsear algunos feeds. Hay uno que manda esto en la descripción: Código HTML: <description> &lt; p &gt; Den italienske ...
  #1 (permalink)  
Antiguo 13/11/2008, 09:43
(Desactivado)
 
Fecha de Ingreso: septiembre-2004
Mensajes: 360
Antigüedad: 19 años, 7 meses
Puntos: 1
str_replace

Hola todos.
Estoy usando simplepie para parsear algunos feeds.
Hay uno que manda esto en la descripción:
Código HTML:
<description>&lt;p&gt;
Den italienske motorsykkelprodusenten kaster seg inn i klokke-gamet. 
&lt;/p&gt;</description> 
Entonces como quiero cargarlo en una tabla sin html tags intento usar strip_tags pero no remueve <p> y </p>. Entonces uso str_replace:
Código PHP:
$descrip1=str_replace("&lt;p&gt;"""$mydescrip);
$descrip2=str_replace("&lt;/p&gt;"""$descrip1);
$descrip4=eregi_replace("[\n|\r|\n\r]"' '$descrip2); 
En algunos servidores trabaja perfecto pero en otros no hay manera, siempre queda:
b
p
/p... etc

Estoy haciendo algo mal o esto depende de alguna característica del servidor ?
Alguien tiene un minuto para ayudarme ?
  #2 (permalink)  
Antiguo 13/11/2008, 10:57
Avatar de Deschamps  
Fecha de Ingreso: octubre-2008
Mensajes: 257
Antigüedad: 15 años, 6 meses
Puntos: 8
Respuesta: str_replace

Cita:
intento usar strip_tags pero no remueve <p> y </p>
No te funciona porque no tienes etiqueta alguna en la cadena. Determinados caracteres están representados por sus entidades html.
Para usar strip_tags, deberías primero tratar la cadena con html_entity_decode.

Un saludo.
  #3 (permalink)  
Antiguo 13/11/2008, 11:02
(Desactivado)
 
Fecha de Ingreso: septiembre-2004
Mensajes: 360
Antigüedad: 19 años, 7 meses
Puntos: 1
Respuesta: str_replace

Gracias por responderme.
Creo que entre las miles de cosas que intenté hice eso también pero finalmente las <p> y </p>... <b> y </b> quedan aunque sea parcialmente
  #4 (permalink)  
Antiguo 13/11/2008, 11:15
Avatar de erlingfiallos  
Fecha de Ingreso: febrero-2005
Ubicación: Mexico ahora
Mensajes: 499
Antigüedad: 19 años, 2 meses
Puntos: 9
Respuesta: str_replace

Hagamos esto mas facil.. yo haria un arreglo con todas las etiquetas que quiero remover.. y luego mediante un ciclo las eliminaria cuando se encuentren similitudes en la cadena que en este caso seria $mydescrip..

he aqui el ejemplo:

Código PHP:
$arr = array('<p>','</p>');
$mydescrip "<description>&lt;p&gt;Den italienske motorsykkelprodusenten kaster seg inn i klokke-gamet.&lt;/p&gt;</description>";
        
foreach(
$arr as $clave => $valor)
     
$mydescrip str_replace(htmlentities($valor), ""$mydescrip);
        
echo 
$mydescrip
  #5 (permalink)  
Antiguo 13/11/2008, 11:30
Avatar de Deschamps  
Fecha de Ingreso: octubre-2008
Mensajes: 257
Antigüedad: 15 años, 6 meses
Puntos: 8
Respuesta: str_replace

Cita:
(..) intenté hice eso también pero finalmente las <p> y </p>... <b> y </b> quedan aunque sea parcialmente (..)
¿Seguro? Yo acabo de probarlo con la cadena que indicas... y funciona perfectamente:

Código php:
Ver original
  1. $prueba1 = '<description>&lt;p&gt;
  2. Den italienske motorsykkelprodusenten kaster seg inn i klokke-gamet.
  3. &lt;/p&gt;</description>';
  4. $prueba2 = preg_replace( '/\r\n/', '', strip_tags( html_entity_decode( $prueba1 ) ) );

Si te quedan "restos" en otras cadenas, debe ser que están mal formadas o que no se ajustan a las reglas que defines para las sustituciones.
  #6 (permalink)  
Antiguo 13/11/2008, 15:50
(Desactivado)
 
Fecha de Ingreso: septiembre-2004
Mensajes: 360
Antigüedad: 19 años, 7 meses
Puntos: 1
Respuesta: str_replace

Gracias chicos por sus respuestas.
Funcionan por supuesto en todos lados MENOS en un server en particular.
Eso es lo que no entiendo.

En el server problemático por ejemplo la cadena:
Código PHP:
>&lt;p&gt
La convierte en:
Código PHP:

haga lo que haga, aplicando lo que ustedes me dicen, como sea.
http://www.bors365.com/nyheter/test.php

Pongo el mismo archivo en otro server y este es el resultado:
http://globalwork.no-ip.org/rss_german/t.php



Agrego: en todos los servers lo haga como lo haga funciona bien. Por ejemplo modifico htmltags de simplepie y uso sustituciones en la cadena a mi gusto y funciona. O dejo habilitados htmltags de simplepie y también funciona. Uso sustituciones por un camino u otro (siguiendo sus ejemplos) y SIEMPRE funciona. Pero en ese server que dejo el link NO... no trabaja de ninguna manera.
  #7 (permalink)  
Antiguo 13/11/2008, 21:44
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: str_replace

deveras!!! ??

mm... yo primero reemplazaría los &amp; en &, &lt; en < y &gt; en >

Código PHP:
$texto strtr($texto, array(
  
'&amp;' => '&',
  
'&lt;' => '<',
  
'&gt;' => '>'
)); 
luego, usaría strip_tags ... y bingo!!

http://php.net/strip_tags
http://php.net/strtr

la verdad es extraño tu caso, y de verdad me sorprende...

no se si tengas alguno otro dato (investiga) versión de servidores, configuración de PHP ... incluso, como usas SimplePIE ??

etc... suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 14/11/2008, 06:42
(Desactivado)
 
Fecha de Ingreso: septiembre-2004
Mensajes: 360
Antigüedad: 19 años, 7 meses
Puntos: 1
Respuesta: str_replace


Gracias de nuevo a todos !
En ese servidor no hay manera.
Por lo que veo en miles de pruebas que hice... cuando captura el feed lo parsea de tal forma que resulta esto:

pDen italienske motorsykkelprodusenten kaster seg inn i klokke-gamet. /p


Intenté poner:
Código PHP:
$feed->strip_htmltags(false); 
Según lo que indican en el soporte de Simplepie (aunque no lo recomiendan). Bueno, digo que intenté hacer eso y luego aplicar sustitución en la cadena pero sucede exactamente lo mismo... pero sólo en ese servidor... cosa muy loca.

Esto sucede para las otras tags por supuesto... queda b y /b por ejemplo Puedo sustituir las / pero en las que no tienen la barra invertida corro el riesgo de eliminar caracteres válidos porque además quedan pegadas al texto como muestro más arriba.

El server donde no funciona usa:
PHP 5.25
MySQL 5.X

Los otros usan:
PHP 5.04
MySQL 4.x

Última edición por Suyta; 14/11/2008 a las 06:50
  #9 (permalink)  
Antiguo 14/11/2008, 13:13
Avatar de Deschamps  
Fecha de Ingreso: octubre-2008
Mensajes: 257
Antigüedad: 15 años, 6 meses
Puntos: 8
Respuesta: str_replace

Sólo por curiosidad... ¿has tocado algo en el servidor? Porque ahora se ven perfectamente las cadenas en las páginas 'test' que indicaste.

¿Cuál era el problema, pues? Porque me quedé intrigado :)

Un saludo.
  #10 (permalink)  
Antiguo 14/11/2008, 19:28
(Desactivado)
 
Fecha de Ingreso: septiembre-2004
Mensajes: 360
Antigüedad: 19 años, 7 meses
Puntos: 1
Respuesta: str_replace


No, no he tocado nada ni he podido resolverlo.
Lo único que se me ocurrió fue hacer que la captura del feed trabaje en otro server donde sí funciona y simplemente lo muestro pero viene de otro lado

Los del hosting me cambiaron la versión de MySQL pero no trabaja, nunca pensé que fuera por eso porque en mis pruebas no enlazaba con las tablas y daba error pero ellos intentaron eso. Más bien creo que puede ser la versión de PHP, es lo único que veo distinto.
Pero la verdad ? no entiendo.
Miles de gracias por la ayuda
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 15:48.