Foros del Web » Programando para Internet » PHP »

expresion regular algo complega en imagenes

Estas en el tema de expresion regular algo complega en imagenes en el foro de PHP en Foros del Web. Bine, cuento la historia. En wordpresss guarde todas las imagenes de mi publicacion de forma, <img scr="carpeta/imagen.jpg">, pero finalmente lo que sucedes es que las ...
  #1 (permalink)  
Antiguo 01/09/2011, 10:43
Avatar de nes24  
Fecha de Ingreso: julio-2005
Mensajes: 746
Antigüedad: 18 años, 9 meses
Puntos: 3
expresion regular algo complega en imagenes

Bine, cuento la historia.


En wordpresss guarde todas las imagenes de mi publicacion de forma,

<img scr="carpeta/imagen.jpg">,

pero finalmente lo que sucedes es que las imagenes deven quedar de forma

<img scr="http://dominio.com/carpeta/imagen.jpg">,

Tengo una variable que se llama

$contenido ="aqui todo el contenido";

Necesito reemplazar SOLO AQUILLAS IMAGENES QUE NO TENGAN UN HTTP: en cu scr asi que un str_remplace no funciona.

COmo puedo hacerlo con preg_replace.
__________________
No hay nada que foros del web no sepa!!!!

Peca tanto quien presume de su belleza como de su inteligencia, ya que la brevedad de la vida aunque distorcionada siempre estara presente.
  #2 (permalink)  
Antiguo 01/09/2011, 10:45
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: expresion regular algo complega en imagenes

Lee este aporte y aprenderás a hacer eso. Cuando lo intentes vuelve con las dudas.

http://www.forosdelweb.com/f18/aport...s-pcre-646110/
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #3 (permalink)  
Antiguo 01/09/2011, 10:53
Avatar de hasdpk  
Fecha de Ingreso: agosto-2011
Ubicación: $spain->city( 'Arucas' );
Mensajes: 1.800
Antigüedad: 12 años, 7 meses
Puntos: 297
Respuesta: expresion regular algo complega en imagenes

Mi opinión es que en vez de hacerlo con PHP debería de editar la BD y con poner que fuera "./carpeta/imagen.jpg" debería de ser suficiente.

Date cuenta que cuando haces una consulta HTTP, lo que hace es consumirte ancho de banda, ya que "accedes" a tu web, en vez de buscar en los directorios.
  #4 (permalink)  
Antiguo 01/09/2011, 11:16
Avatar de nes24  
Fecha de Ingreso: julio-2005
Mensajes: 746
Antigüedad: 18 años, 9 meses
Puntos: 3
Respuesta: expresion regular algo complega en imagenes

Cita:
Iniciado por hasdpk Ver Mensaje
Mi opinión es que en vez de hacerlo con PHP debería de editar la BD y con poner que fuera "./carpeta/imagen.jpg" debería de ser suficiente.

Date cuenta que cuando haces una consulta HTTP, lo que hace es consumirte ancho de banda, ya que "accedes" a tu web, en vez de buscar en los directorios.

Ven, buen apunte, pero quiero manupular las expresiones regulares.

Mira voy aca


$info = ' img width="208" height="142" src="source/newpr_1.jpg" <br /> img width="208" height="142" src="images/newpr_1.jpg" <br /> img width="208" height="142" src="images/newpr_1.jpg" <br /> img width="208" height="142" <br /> src="images/newpr_1.jpg" ';
echo preg_replace('/src="( si no inicia con HTTP )"/','src="http:', $info);
__________________
No hay nada que foros del web no sepa!!!!

Peca tanto quien presume de su belleza como de su inteligencia, ya que la brevedad de la vida aunque distorcionada siempre estara presente.
  #5 (permalink)  
Antiguo 01/09/2011, 11:20
Avatar de hasdpk  
Fecha de Ingreso: agosto-2011
Ubicación: $spain->city( 'Arucas' );
Mensajes: 1.800
Antigüedad: 12 años, 7 meses
Puntos: 297
Respuesta: expresion regular algo complega en imagenes

Yo no soy un expero con expresiones regulares, pero esto "echo preg_replace('/src="( si no inicia con HTTP )"/','src="http:', $info);" está mal.
  #6 (permalink)  
Antiguo 01/09/2011, 11:27
Avatar de nes24  
Fecha de Ingreso: julio-2005
Mensajes: 746
Antigüedad: 18 años, 9 meses
Puntos: 3
Respuesta: expresion regular algo complega en imagenes

Cita:
Iniciado por hasdpk Ver Mensaje
Yo no soy un expero con expresiones regulares, pero esto "echo preg_replace('/src="( si no inicia con HTTP )"/','src="http:', $info);" está mal.


ejejjejejeje claro...

EL asunto es que no se como hacer esa condicion, es decir que si no inicia con HTTP, no lo tome
__________________
No hay nada que foros del web no sepa!!!!

Peca tanto quien presume de su belleza como de su inteligencia, ya que la brevedad de la vida aunque distorcionada siempre estara presente.
  #7 (permalink)  
Antiguo 01/09/2011, 11:30
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: expresion regular algo complega en imagenes

Mira algo así

Código PHP:
Ver original
  1. $res = preg_replace('@src="([^http://].*?)"@is', 'src="http://dominio.com/$1"', $html);
  2. echo $res;

Que reemplaze todo lo que esté entre src mientras no empiece con http://
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #8 (permalink)  
Antiguo 01/09/2011, 11:30
Avatar de hasdpk  
Fecha de Ingreso: agosto-2011
Ubicación: $spain->city( 'Arucas' );
Mensajes: 1.800
Antigüedad: 12 años, 7 meses
Puntos: 297
Respuesta: expresion regular algo complega en imagenes

Tu mismo lo has dicho "si no", ahí tienes un flujo de control.

Simplemente tienes que separar las que están bien de las que están mal y a estas últimas añadirle lo que desees.

Leyendo como lo he puesto, parece que no hacen falta una expresion regular
  #9 (permalink)  
Antiguo 01/09/2011, 13:32
Avatar de nes24  
Fecha de Ingreso: julio-2005
Mensajes: 746
Antigüedad: 18 años, 9 meses
Puntos: 3
Respuesta: expresion regular algo complega en imagenes

Cita:
Iniciado por andresdzphp Ver Mensaje
Mira algo así

Código PHP:
Ver original
  1. $res = preg_replace('@src="([^http://].*?)"@is', 'src="http://dominio.com/$1"', $html);
  2. echo $res;

Que reemplaze todo lo que esté entre src mientras no empiece con http://


Oye, tu eres lo maximo!!!!

my vacana la funcion, super. Ven explicala para todos porfa.
__________________
No hay nada que foros del web no sepa!!!!

Peca tanto quien presume de su belleza como de su inteligencia, ya que la brevedad de la vida aunque distorcionada siempre estara presente.
  #10 (permalink)  
Antiguo 01/09/2011, 13:39
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: expresion regular algo complega en imagenes

Lo que hace es buscar src que no empiezen con http:// (para eso es [^http://] negación, .*? para capturar todo lo que este entre las comillas... el ? para que no se vaya hasta el próximo src sino que capture de a un src, el is para que distinga mayúsculas y minúsculas y que acepte todo incluso saltos de línea. Ahora en la parte del reemplazo lo que quieres cambiar y le agregamos el src capturado anteriormente con el $1.

Saludos
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #11 (permalink)  
Antiguo 01/09/2011, 13:43
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 16 años, 9 meses
Puntos: 194
Respuesta: expresion regular algo complega en imagenes

Cita:
Iniciado por andresdzphp Ver Mensaje
Lo que hace es buscar src que no empiezen con http:// (para eso es [^http://] negación, .*? para capturar todo lo que este entre las comillas... el ? para que no se vaya hasta el próximo src sino que capture de a un src, el is para que distinga mayúsculas y minúsculas y que acepte todo incluso saltos de línea. Ahora en la parte del reemplazo lo que quieres cambiar y le agregamos el src capturado anteriormente con el $1.

Saludos
Creo que ya se a quien consultar cuando tenga alguna duda con alguna expresión regular
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #12 (permalink)  
Antiguo 01/09/2011, 17:40
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: expresion regular algo complega en imagenes

Bueno igual no funciona en todos los casos, si la carpeta empieza con la letra h, no va a funcionar. Pero nada que no se pueda solucionar... Dejo otro ejemplo de práctica con estas expresiones regulares.

Código PHP:
Ver original
  1. <?php
  2. $html = <<<HTML
  3. <html><head><title>Titulo de la web</title></head>
  4. <body>
  5. Texto<br />
  6. <img src="http://www.google.com/imagen.jpg" /><br />
  7. Texto 2<br />
  8. <img src="carpeta/imagen.jpg" /><br />
  9. Texto 3<br />
  10. <img src="carpeta2/imagen.jpg" /><br />
  11. Texto 4<br />
  12. <img src="http://www.forosdelweb.com/imagen.gif" alt="El mejor foro" /><br />
  13. </body>
  14. </html>
  15. HTML;
  16.  
  17. $res = preg_replace('@src="(.*?)"@is', 'src="http://dominio.com/$1"', $html);
  18. $res = preg_replace('@http://dominio.com/http://@is', 'http://', $res);
  19. echo $res;

Edit: Es mejor hacer esto con DOMDocument por ejemplo para asegurarse que si reemplace lo que es.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Última edición por andresdzphp; 01/09/2011 a las 18:18

Etiquetas: expresion, imagenes, regular, variables
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 10:23.