Foros del Web » Programando para Internet » PHP »

Obtener src de una etiqueta img y modificarlo

Estas en el tema de Obtener src de una etiqueta img y modificarlo en el foro de PHP en Foros del Web. Un saludo compañeros del foro, tengo una cadena con etiquetas img dentro, quiero agregarle al src de las imágenes una ruta. por ejemplo: Código PHP: ...
  #1 (permalink)  
Antiguo 31/10/2011, 16:28
 
Fecha de Ingreso: diciembre-2006
Ubicación: Tunja
Mensajes: 177
Antigüedad: 17 años, 3 meses
Puntos: 2
Obtener src de una etiqueta img y modificarlo

Un saludo compañeros del foro, tengo una cadena con etiquetas img dentro, quiero agregarle al src de las imágenes una ruta. por ejemplo:

Código PHP:
$cadena'<p><img src="imagen.jpg" alt="imagen" width="628" height="518" /></p><img src="imagen2.jpg" alt="imagen2" width="628" height="518" />'
y quiero que la cadena quede asi:

Código PHP:
$cadena'<p><img src="ruta/imagen.jpg" alt="imagen" width="628" height="518" /></p><img src="ruta/imagen2.jpg" alt="imagen2" width="628" height="518" />'
Lo estoy haciendo de la siguiente forma, pero no se como decirle que le agregue al src, no que lo reemplace por completo, ah y el patron no esta bien porque me reemplaza desde el img.

Código PHP:
$cadena'<p><img src="imagen.jpg" alt="imagen" width="628" height="518" /></p><img src="imagen2.jpg" alt="imagen2" width="628" height="518" />';
$patron '<img.*?src="(.*?)\".*?>';
echo 
preg_replace($patron'ruta/'$cadena); 
De antemano gracias.
__________________
Qubo Visual
www.mitunja.net
  #2 (permalink)  
Antiguo 31/10/2011, 16:37
 
Fecha de Ingreso: diciembre-2006
Ubicación: Tunja
Mensajes: 177
Antigüedad: 17 años, 3 meses
Puntos: 2
Respuesta: Obtener src de una etiqueta img y modificarlo

He encontrado un mejor patron, este si solamente me reemplaza el src. Me falta decirle que no lo reemplace por completo sino que le agregue la ruta.

$cadena= '<p><img src="imagen.jpg" alt="imagen" width="628" height="518" /></p><img src="imagen2.jpg" alt="imagen2" width="628" height="518" />';
/*$patron = '<img.*?src="(.*?)\".*?>';*/
$patron = '@src="([^"]+)"@';
echo preg_replace($patron, 'src="ruta/"', $cadena);
__________________
Qubo Visual
www.mitunja.net
  #3 (permalink)  
Antiguo 31/10/2011, 16:38
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Obtener src de una etiqueta img y modificarlo

Tu expresión entonces está mal diseñada, pues precisamente reemplaza toda la etiqueta.

Deberías aprender a formular expresiones con mas sentido, consulta lo siguiente:
http://www.forosdelweb.com/f18/aport...s-pcre-646110/

Edito: ahora entonces necesitas especificar en el reemplazo la captura previa de los paréntesis, consulta el enlace anterior.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 31/10/2011, 16:49
 
Fecha de Ingreso: diciembre-2006
Ubicación: Tunja
Mensajes: 177
Antigüedad: 17 años, 3 meses
Puntos: 2
Respuesta: Obtener src de una etiqueta img y modificarlo

pateketrueke, gracias por responder, ya casi lo tengo, mi problema ahora es que como $match trae la url de la primera imagen, para la segunda ya no me sirve.

este es el codigo:
<?php
$cadena= '<p><img src="imagen.jpg" alt="imagen" width="628" height="518" /></p><img src="imagen2.jpg" alt="imagen2" width="628" height="518" />';
$patron = '@src="([^"]+)"@';
preg_match( $patron , $cadena , $match );
echo preg_replace($patron, 'src="ruta/' . $match[1] . '"', $cadena);
?>
__________________
Qubo Visual
www.mitunja.net
  #5 (permalink)  
Antiguo 31/10/2011, 16:51
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Obtener src de una etiqueta img y modificarlo

Ahí tienes otro problema, no debes usar la variable $match para hacer el reemplazo sino los mismos marcadores que provee PCRE para ello:
Código PHP:
$foo 'abc';
$bar preg_replace('/b/''@\\0@'$foo);

echo 
$bar// a@b@c 
Por favor, consulta el manual.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 31/10/2011, 17:20
 
Fecha de Ingreso: diciembre-2006
Ubicación: Tunja
Mensajes: 177
Antigüedad: 17 años, 3 meses
Puntos: 2
Respuesta: Obtener src de una etiqueta img y modificarlo

Gracias. No he dado con el patron para obtener solamente lo que esta dentro de las comillas, este patron lo he modificado pero siempre obtengo desde donde empieza src.

$patron = '/src="(.+?)"/';

Quiero obtener unicamente lo que esta dentro de las comillas, gracias por la ayuda.
__________________
Qubo Visual
www.mitunja.net
  #7 (permalink)  
Antiguo 31/10/2011, 17:27
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Obtener src de una etiqueta img y modificarlo

No no, por favor lee lo que te mandé.

Lo que se "captura" es toda expresión que se encuentra entre paréntesis, de esa forma debes usar el marcador que corresponda a tu captura.

Al ser la primera debes usar \1 o $1, en mi ejemplo use \0 puesto que no hay paréntesis de captura en mi expresión.

De verdad nada te cuesta leer un poco y prestar atención, gracias.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 01/11/2011, 17:08
 
Fecha de Ingreso: diciembre-2006
Ubicación: Tunja
Mensajes: 177
Antigüedad: 17 años, 3 meses
Puntos: 2
Respuesta: Obtener src de una etiqueta img y modificarlo

Gracias por la ayuda, mi Solucion fue esta:

Código PHP:
$string'<p><img src="image.jpg" alt="image" width="628" height="518" /></p><img src="image2.jpg" alt="image2" width="628" height="518" />';
$pattern '/src=[\"\']([^\"\']+)/';
echo 
preg_replace($pattern'src="path/$1'$string); 
Un saludo.
__________________
Qubo Visual
www.mitunja.net

Etiquetas: etiqueta, img, src
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:03.