Foros del Web » Programando para Internet » PHP »

Ayuda con eregi_replace y cadenas!

Estas en el tema de Ayuda con eregi_replace y cadenas! en el foro de PHP en Foros del Web. Hola amigos! Necesito la ayuda de ustedes! No puedo resolver esto... Supongamos que tengo una cadena así: $cadena = 'HEIGHT: 100% <div style="Z-INDEX: 2; LEFT: ...
  #1 (permalink)  
Antiguo 23/03/2009, 03:48
 
Fecha de Ingreso: marzo-2009
Mensajes: 8
Antigüedad: 15 años, 1 mes
Puntos: 0
Pregunta Ayuda con eregi_replace y cadenas!

Hola amigos! Necesito la ayuda de ustedes! No puedo resolver esto...

Supongamos que tengo una cadena así:

$cadena = 'HEIGHT: 100% <div style="Z-INDEX: 2; LEFT: 0px; WIDTH: 100%; POSITION: absolute; TOP: 0px;HEIGHT: 100%" onclick="var img = new resizeImgOO(document.getElementById(\'dispImg\')); img.toggleRestore();">';

Necesito saber como eliminar "HEIGHT: 100%" solo el que está dentro de la etiqueta div. No sé realmente como se hace. Intenté con expresiones regulares pero no dio resultado. Debería ser algo parecido a este, que obviamente no funciona:

Código:
$cadena = eregi_replace("<div*HEIGHT: 100%*>", "<div*>", $cadena);
¿Alguna solución?

Muchas gracias!
  #2 (permalink)  
Antiguo 23/03/2009, 03:58
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 8 meses
Puntos: 2114
Respuesta: Ayuda con eregi_replace y cadenas!

Si es solo eliminar una parte concreta que siempre es igual mejor usar str_replace().

Código php:
Ver original
  1. str_replace("HEIGHT: 100%,"",$cadena);
  #3 (permalink)  
Antiguo 23/03/2009, 04:04
 
Fecha de Ingreso: marzo-2009
Mensajes: 8
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Ayuda con eregi_replace y cadenas!

No no... Tiene que borrarse solo la que se encuentra dentro de la etiqueta DIV.

Por eso no sé!!

Gracias
  #4 (permalink)  
Antiguo 23/03/2009, 09:41
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Ayuda con eregi_replace y cadenas!

Prueba así:
Código php:
Ver original
  1. $cadena = eregi_replace('(<div[^>]+style="[^"]*)HEIGHT: 100%', '\\1', $cadena);
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.

Última edición por David; 23/03/2009 a las 11:14
  #5 (permalink)  
Antiguo 23/03/2009, 10:44
Avatar de SCY-FOX  
Fecha de Ingreso: septiembre-2007
Ubicación: Chile
Mensajes: 139
Antigüedad: 16 años, 7 meses
Puntos: 5
Respuesta: Ayuda con eregi_replace y cadenas!

Cita:
Iniciado por David el Grande Ver Mensaje
Prueba así:
Código php:
Ver original
  1. $cadena = eregi_replace('(<div[^>]+style="[a-z0-9;:% -]*)HEIGHT: 100%;', '\\1', $cadena);
uta que hay gente seca para usar expresiones regulares....



(sorry por colgarme al post, pero algun manualcito bueno de expresiones regulares?? no entendí ni jota lo que dice dentro de eregi_replace)
  #6 (permalink)  
Antiguo 23/03/2009, 10:56
Avatar de argy  
Fecha de Ingreso: octubre-2007
Ubicación: Longitud 75º Latitud 18º Sur
Mensajes: 614
Antigüedad: 16 años, 5 meses
Puntos: 18
Respuesta: Ayuda con eregi_replace y cadenas!

si buscas en google, seguro que encontrarás abundante información, en el sitio oficial de php también existe un manual de referencias

http://www.php.net/manual/es/book.pcre.php

por otra parte ya no debería utilizarse la librería posix(ereg,eregi,etc), ya que en la versión 5.3 de php es obsoleta y en la 6 ya no estará disponible.
__________________
Software libre para un mundo libre.

Eventualmente en el foro.
  #7 (permalink)  
Antiguo 23/03/2009, 11:19
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Ayuda con eregi_replace y cadenas!

Ahora lo he simplificado, quizás ya puedas entender lo que dice .

En fin, puedes leer un poco sobre expresiones regulares aquí:
http://www.forosdelweb.com/f18/aport...s-pcre-646110/
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #8 (permalink)  
Antiguo 23/03/2009, 12:27
 
Fecha de Ingreso: marzo-2009
Mensajes: 8
Antigüedad: 15 años, 1 mes
Puntos: 0
De acuerdo Respuesta: Ayuda con eregi_replace y cadenas!

Muchas gracias! Funcionó perfectamente el código "simplificado" (jaja! ¡¡cómo me cuestan las expresiones regulares!!) de David el Grande!

eregi_replace va a desaparecer en la versión 6? Y cómo es eso de que es obsoleta en la versión 5.3? No entiendo bien, que hay alguna otra manera más eficiente (supongo) de resolver el problema?

Saludos y muchísimas gracias!
  #9 (permalink)  
Antiguo 23/03/2009, 12:34
Avatar de argy  
Fecha de Ingreso: octubre-2007
Ubicación: Longitud 75º Latitud 18º Sur
Mensajes: 614
Antigüedad: 16 años, 5 meses
Puntos: 18
Respuesta: Ayuda con eregi_replace y cadenas!

de hecho obsoleta quiere decir que ya dejará de ser utilizada, es más en la version 5.3 te da un mensaje de deprecated al utilizar estas funciones(libreria posix), además hay un nuevo tipo de error E_DEPRECATED, para saber que funciones ya no estarán disponibles en la versión 6, pero lo que es cierto lo que es obsoleto en 5.3 no estará disponible en la versión 6.

ahora que utilizar en lugar de ereg_replace??? pues preg_match y si lo que se quiere que no diferencie mayúsculas de minúsculas, pues utiliza el modificador i

suerte.
__________________
Software libre para un mundo libre.

Eventualmente en el foro.
  #10 (permalink)  
Antiguo 23/03/2009, 12:39
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Ayuda con eregi_replace y cadenas!

Efectivamente, eregi_replace está DEPRECATED.

¿Solución? preg_replace:
Código php:
Ver original
  1. $cadena = preg_replace('/(<div[^>]+style="[^"]*)HEIGHT: 100%/i', '\\1', $cadena);
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #11 (permalink)  
Antiguo 23/03/2009, 12:49
 
Fecha de Ingreso: marzo-2009
Mensajes: 8
Antigüedad: 15 años, 1 mes
Puntos: 0
De acuerdo



Muy bien explicado!

Ya no tengo más dudas!

Sigan así!!

Saludos!!

Ah un problemita más, aver si me ayudan... El último y no los jodo más! jeje

Si quiero eliminar las etiquetas SCRIPT con su contenido de una cadena, utilizaba el siguiente código que funciona perfectamente:

Código:
$cadena = eregi_replace("<script[^>]*>.*/script>","",$cadena);
Si quiero utilizar preg_replace, pongo el siguiente código:

Código:
$cadena = preg_replace('/<script[^>]*>.*/script>/i','',$cadena);
Y está mal, me tira el siguiente error:

Warning: preg_replace() [function.preg-replace]: Unknown modifier 'c' in /home/hosting/public_html/hlp.php on line 9

No entiendo qué hice mal!

Última edición por GatorV; 23/03/2009 a las 13:56
  #12 (permalink)  
Antiguo 23/03/2009, 13:48
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Ayuda con eregi_replace y cadenas!

Debes escapar la barra:
Código php:
Ver original
  1. $cadena = preg_replace('/<script[^>]*>.*\/script>/i','',$cadena);
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #13 (permalink)  
Antiguo 23/03/2009, 13:52
 
Fecha de Ingreso: marzo-2009
Mensajes: 8
Antigüedad: 15 años, 1 mes
Puntos: 0
De acuerdo Respuesta: Ayuda con eregi_replace y cadenas!

Uhhh era una barra invertidaaa! Jaja! Qué novato soy en esto!

Muchas gracias David por salvarme!

Ahora si, no más preguntas!

- Tema cerrado -
  #14 (permalink)  
Antiguo 23/03/2009, 15:44
Avatar de argy  
Fecha de Ingreso: octubre-2007
Ubicación: Longitud 75º Latitud 18º Sur
Mensajes: 614
Antigüedad: 16 años, 5 meses
Puntos: 18
Respuesta: Ayuda con eregi_replace y cadenas!

o también puedes utilizar otro delimitador, ya que la / es parte de tu patrón, puedes utilizar como delimitador # por ejemplo.
__________________
Software libre para un mundo libre.

Eventualmente en el foro.
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 14:55.