Foros del Web » Programando para Internet » PHP »

Encontrar cadena, algo complicadillo

Estas en el tema de Encontrar cadena, algo complicadillo en el foro de PHP en Foros del Web. Hola foreros!, Mirar... tengo una variable que tiene un monton de codigo html. Buscaba reemplazar un div en cuestion por una imagen, el problema es ...
  #1 (permalink)  
Antiguo 18/05/2009, 09:52
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 12 años, 9 meses
Puntos: 19
Encontrar cadena, algo complicadillo

Hola foreros!,

Mirar... tengo una variable que tiene un monton de codigo html. Buscaba reemplazar un div en cuestion por una imagen, el problema es que desconozco el contenido de ese div, por lo que no puedo reemplazarlo. Mejor os pongo un ejemplo, jeje:

La variable tiene un monton de div's, lo que quiero es reemplazar todos los div's con class="div_feo" por otro fragmento de html.

Código HTML:
<div class="div_feo">
    	<a href="numero_2000423.php"> <!-- la direccion puede cambiar -->
		numero_2000423 <!-- esta cadena puede cambiar -->
	</a>
</div> 
Código HTML:
<img  src="numero_2000423.jpg"> 
Es decir, que quiero cambiar todos los div's de clase 'div feo' por una imagen con la misma url que el link que esta dentro del div_feo.

¿Es posible?... yo he conseguido sustituir algunos fragmentos, pero el problema me viene cuando quiero cortar el final del div, pues '</a></div>' existe en mas partes de la web y solo quiero cortar el final de esos determinados div's...


¿Sabeis?... decidme que si... estoy desesperado...

Última edición por salbatore; 18/05/2009 a las 10:05
  #2 (permalink)  
Antiguo 18/05/2009, 10:45
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 7 meses
Puntos: 2135
Respuesta: Encontrar cadena, algo complicadillo

Claro, tienes que usar una expresión regular usando preg_replace.

Saludos.
  #3 (permalink)  
Antiguo 18/05/2009, 11:08
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 12 años, 9 meses
Puntos: 19
Respuesta: Encontrar cadena, algo complicadillo

Hola de nuevo...

He mirado algo la funcion... y no entiendo muy bien como pretendes usarla en mi caso, jeje... He mirado un poco y creo que tiene poco que ver con lo que pienso hacer, jeje...

¿Que pensais?
  #4 (permalink)  
Antiguo 18/05/2009, 11:27
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 7 meses
Puntos: 2135
Respuesta: Encontrar cadena, algo complicadillo

No, si usas una expresión regular, puedes capturar todo lo que viene dentro de los <divs> que tengan el id que buscas, luego con lo que capturaste, usas por ejemplo preg_replace_callback() para buscar dentro la imagen que tiene y hacer el reemplazo.

Saludos.
  #5 (permalink)  
Antiguo 18/05/2009, 11:35
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 12 años, 9 meses
Puntos: 19
Respuesta: Encontrar cadena, algo complicadillo

Hola GatorV...

Siento ser tan novato, jeje... pero por ejemplo...

Como encontrarias este div reemplazarias este div entre un monton de div's sabiendo de antemano que es de clase 'div_feo' y su contenido puede ser cualquier contenido:

Código HTML:
<div class='div_feo'>
este contenido puede ser variable
</div> 
  #6 (permalink)  
Antiguo 18/05/2009, 14:52
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 7 meses
Puntos: 2135
Respuesta: Encontrar cadena, algo complicadillo

Pues puedes usar una regla, lee lo siguiente: http://www.forosdelweb.com/f18/aport...s-pcre-646110/

Viene clarametne explicado como puedes hacer un match de una cadena usando las expresiones regulares.

Saludos.
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 06:06.