Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/06/2012, 02:59
el_cos
 
Fecha de Ingreso: marzo-2012
Ubicación: A Coruña
Mensajes: 29
Antigüedad: 12 años, 1 mes
Puntos: 1
Pregunta Modificar trozo de cadena en cada aparición

¡Hola! Resulta que en la aplicación que estoy diseñando los usuarios podrán subir imágenes a través del ckeditor. Y quiero que, cuando se suba una imagen, se le añada un efecto lightbox para que se pueda ampliar, automáticamente al grabarla.

Para ello, tengo que transformar un código del tipo:

Código:
<img alt="" src="http://www.foto-gratis.es/photos/0-0/2008-11-18/Img01122008105184546110.jpg" style="width: 550px; height: 853px" />
en código de tipo:
Código:
<a href="imagenes/contenido/<?php echo $fila_contenido['contenido_imagen']; ?>"
rel="lightbox[grupo]" title="<?php echo $fila[''.$name]?>">
<img src = "<?php echo "imagenes/contenido/";
	echo $fila_contenido['contenido_imagen'];?> " alt="Ampliar" width="150" height="150"/>
He conseguido que me lo cambié en la primera aparición de una imagen. Lo hice así: preguntando si detecta que hay una imagen en el valor introducido a través del ckeditor:
Código:
 if (strpos ($contenido_descripcion, 'img alt')) $contenido_descripcion = divide($contenido_descripcion);
Y en ese caso, como podéis ver, se llama a la función divide, que hace esto:
Código:
	function divide($original) {
		$division = explode ('img alt', $original);
		$segundaparte = substr ($division[1], 9, strlen($division[1]));
		$indice = strpos ($segundaparte, '/>');
		$algo = substr($segundaparte, 0, $indice);
		$prueba1 = 'a href="';
		$prueba2 = '/>';
		$prueba3 = ' rel="lightbox[grupo]"> <img src="';
		$prueba4 = '/>';
		$valor = $division[0].$prueba1.$algo.$prueba3.$algo.$prueba4;						
		return $valor;
	}
De la transformación de código necesaria para que coja el lightbox me puedo ocupar yo, pero lo que necesitaba es ayuda para saber si es posible, dada una cadena (el texto completo que introduce a través de ckeditor), identificar todas las apariciones de una determinada subcadena (desde img alt hasta /> ) y actualizarlas sólo a ellas. Sé que hay funciones para encontrar la última aparición (strrchr), la primera aparición (strpos), dividir cadenas en partes (explode)... pero no soy capaz de hacer lo que quiero utilizando esas funciones.

¡Muchas gracias por adelantado! Saludos.