Foros del Web » Programando para Internet » PHP »

Cambiar links en página capturada con file_get_contents

Estas en el tema de Cambiar links en página capturada con file_get_contents en el foro de PHP en Foros del Web. Hola todos. Es posible cambiar los links de las imágenes de Google ?. Lo que quiero es que el link apunte directamente al sitio y ...
  #1 (permalink)  
Antiguo 18/11/2008, 22:13
(Desactivado)
 
Fecha de Ingreso: septiembre-2004
Mensajes: 360
Antigüedad: 19 años, 7 meses
Puntos: 1
Cambiar links en página capturada con file_get_contents

Hola todos.

Es posible cambiar los links de las imágenes de Google ?. Lo que quiero es que el link apunte directamente al sitio y no a la biblioteca de Google.
Logré esto, tengo el link que necesito pero ahí estoy trancada

Código PHP:
$full='<a href="/imgres?imgurl=http://www.animalhealthfoundation.com/Images/beloved-horses.jpg&imgrefurl=http://www.animalhealthfoundation.com/about.html&h=600&w=800&sz=57&tbnid=ibidPAhcu4QJ::&tbnh=107&tbnw=143&prev=/images%3Fq%3Dhorses&hl=es&usg=__87z8GeCCkkG1C8l7DjD5Dv9M0LU=&sa=X&oi=image_result&resnum=1&ct=image&cd=1">
<img height="107" width="143" border="1" align="middle" title="http://www.animalhealthfoundation.com/about.html" alt="http://www.animalhealthfoundation.com/about.html" src="http://tbn0.google.com/images?q=tbn:ibidPAhcu4QJ::www.animalhealthfoundation.com/Images/beloved-horses.jpg"/>
</a>'
;

preg_match('/\/imgres([\w\W]*?)\>/',$full,$ftu);
  for (
$az=0$azcount($ftu[0]); $az++) {
    
$deko=$ftu[$az];

preg_match('/imgrefurl([\w\W]*?)h=/',$deko,$ftt2);
  for (
$r=0$rcount($ftt2[0]); $r++) {
  
print_r($ftt2);
  
$d22=$ftt2[$r];
  echo 
$d22;

  
$d22=str_replace("imgrefurl="""$d22);
  
$d22=str_replace("h="""$d22);
  
$d23=preg_replace('|<\/*a.*?>|si'"<a>".$d22."</a>"$full);

  echo 
$d23;

}

Aquí guardo en una variable lo que viene de Google para que puedan ver el código que uso. Sé que ahí estoy eliminando los links que no es lo que necesito.
Alguien sabe cómo puedo hacer ?

Última edición por Suyta; 18/11/2008 a las 22:24
  #2 (permalink)  
Antiguo 18/11/2008, 22:25
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Cambiar links en página capturada con file_get_contents

mmm... y que esta fallando ???

que esperabas ???

como funciona ??

que no sirve ??
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 18/11/2008, 22:42
(Desactivado)
 
Fecha de Ingreso: septiembre-2004
Mensajes: 360
Antigüedad: 19 años, 7 meses
Puntos: 1
Respuesta: Cambiar links en página capturada con file_get_contents

Lo que busco es cambiar el link y que al clickear sobre la imagen valla al sitio donde está la imagen y NO a Google.
Ahora me estoy acercando un poco más con esto, cambié algunas cosas:

Código PHP:
$full='<a href="/imgres?imgurl=http://www.animalhealthfoundation.com/Images/beloved-horses.jpg&imgrefurl=http://www.animalhealthfoundation.com/about.html&h=600&w=800&sz=57&tbnid=ibidPAhcu4QJ::&tbnh=107&tbnw=143&prev=/images%3Fq%3Dhorses&hl=es&usg=__87z8GeCCkkG1C8l7DjD5Dv9M0LU=&sa=X&oi=image_result&resnum=1&ct=image&cd=1">
<img height="107" width="143" border="1" align="middle" title="http://www.animalhealthfoundation.com/about.html" alt="http://www.animalhealthfoundation.com/about.html" src="http://tbn0.google.com/images?q=tbn:ibidPAhcu4QJ::www.animalhealthfoundation.com/Images/beloved-horses.jpg"/>
</a>'
;

preg_match('/\/imgres([\w\W]*?)\>/',$full,$ftu);
  for (
$az=0$azcount($ftu[0]); $az++) {
    
$deko=$ftu[$az];

preg_match('/imgrefurl([\w\W]*?)h=/',$deko,$ftt2);
  for (
$r=0$rcount($ftt2[0]); $r++) {
  
print_r($ftt2);
  
$d22=$ftt2[$r];
  echo 
$d22;

  
$d22=str_replace("imgrefurl="""$d22);
  
$d22=str_replace("&h="""$d22);

  
$d23=str_replace($full'<a href="'.$d22.'>'.$full.'</a>'$full);

  
$d23=str_replace("&%3E%3Ca%20href="""$d23);



  echo 
$d23;

}

Estamos cerca pero me queda algo como esto:
http://globalwork.no-ip.org/google/testo.php

Es decir ahí podés ver que el link resulta esto:
Código HTML:
http://www.animalhealthfoundation.com/about.html&%3E%3Ca%20href=
Y no puedo eliminar esas 'basuritas'.
  #4 (permalink)  
Antiguo 18/11/2008, 23:08
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Cambiar links en página capturada con file_get_contents

mmm... creo que estas dividiendo medio mal...

primero, debes obtener lo que hay en el href (paso uno)

Código PHP:
preg_match('/href="(.+?)"/i'$full$match); 
separa el valor de la query...

Código PHP:
$match explode('?'$match[1]); 
luego, has un explode de los & de la URL obtenida.... (paso dos)

Código PHP:
$test explode('&'$match[1]); 
por cada segmento lo separas por = para obtener la llave y valor....

Código PHP:
foreach ($test as $str)
{
  
$sub explode('='$str);

  if (
$sub[0] === 'imgurl')
  {
    
// OK ???
  
}

y listo, solo compara la llave que buscas y usa el valor... simple, no?

(paso tres)


suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Última edición por pateketrueke; 18/11/2008 a las 23:17
  #5 (permalink)  
Antiguo 18/11/2008, 23:14
(Desactivado)
 
Fecha de Ingreso: septiembre-2004
Mensajes: 360
Antigüedad: 19 años, 7 meses
Puntos: 1
Respuesta: Cambiar links en página capturada con file_get_contents

jejeje ahora que me lo decís suena simple
Mil gracias
  #6 (permalink)  
Antiguo 19/11/2008, 01:08
(Desactivado)
 
Fecha de Ingreso: septiembre-2004
Mensajes: 360
Antigüedad: 19 años, 7 meses
Puntos: 1
Respuesta: Cambiar links en página capturada con file_get_contents


Otra vez aquí
Resulta que para aplicar la solución de Pateketrueke necesito tomar una cadena que está contenida en otra. Uso preg_match_all así:

Código PHP:
if(preg_match_all('/<a href=\"\/imgres([\w\W]*?)\>/',$d18a,$fka)) {
  for (
$aki=0$akicount($fka[0]); $aki++) {
    
$full=$fka[$aki][$aki];

$a=preg_match('/href="(.+?)"/i'$full$matchv);
echo 
$a;
$matchv explode('?'$matchv[1]);
print_r($match);
$test explode('&'$matchv[1]);
//print_r($test);
foreach ($test as $strk)
{
  
$sub explode('='$strk);

  if (
$sub[0] === 'imgrefurl')
  {
    
//echo $test[1];
    
$t=$test[1];
    
$t=str_replace("imgrefurl="""$t);
    
//echo $t;
    
$full=str_replace($a'<a href="'.$t.'</a>'$d18a);
  }
}


}
}
$d23=$full
Esa variable $d18a es la cadenota donde tengo el texto de toda la página y $full es la parte donde quiero cambiar los links.
Pero........ no hay forma de que ese preg_match_all trabaje... vuelve siempre vacío y NO está vacío.

Código PHP:
if(preg_match_all('/<a href=\"\/imgres([\w\W]*?)\>/',$d18a,$fka)) { 
Qué esta mal ahí ? Yo uso un preg_match_all similar para otra parte del texto y trabaja pero éste nop.
  #7 (permalink)  
Antiguo 19/11/2008, 07:05
(Desactivado)
 
Fecha de Ingreso: septiembre-2004
Mensajes: 360
Antigüedad: 19 años, 7 meses
Puntos: 1
Respuesta: Cambiar links en página capturada con file_get_contents

Alguien tiene una idea ?
Nadie ?
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 13:57.