Foros del Web » Programando para Internet » PHP »

obtener la url de una imagen de otro sitio web

Estas en el tema de obtener la url de una imagen de otro sitio web en el foro de PHP en Foros del Web. Hola amigos Bueno tengo un problema consegui este codigo el cual funciona bien Código PHP: function  getImage ( $url ) {  // GET IMDB image      try {       $doc  ...
  #1 (permalink)  
Antiguo 11/08/2012, 21:19
Avatar de newmesis  
Fecha de Ingreso: octubre-2010
Ubicación: Chillán, Chile, Chile
Mensajes: 42
Antigüedad: 13 años, 7 meses
Puntos: 0
obtener la url de una imagen de otro sitio web

Hola amigos Bueno tengo un problema

consegui este codigo el cual funciona bien

Código PHP:
function getImage($url) { // GET IMDB image
    
try { 
    
$doc = new DOMDocument();
    
$doc->loadHTMLfile_get_contents($url) );
    
$xpath = new DOMXPath($doc);
    return 
$xpath->query('//td[@id="img_primary"]/a/img')->item(0)->getAttribute('src');
    } catch( 
Exception $e ) { return null; }
}
 
echo 
getImage("http://www.imdb.com/title/tt0137523/"); 
el codigo lo entiendo a medias

lo que quiero hacer es mesclarlo con este otro codigo
Código PHP:
/* Todo esto se puede poner en un require :D */    
    
class RssReader 
        var 
$url
        var 
$data
        
        function 
RssReader ($url){ 
            
$this->url
            
$this->data implode (""file ($url)); 
        } 
        
        function 
get_items (){ 
            
preg_match_all ("/<item .*>.*<\/item>/xsmUi"$this->data$matches); 
            
$items = array (); 
            foreach (
$matches[0] as $match){ 
                
$items[] = new RssItem ($match); 
            } 
            return 
$items
        } 
    } 
    
    class 
RssItem 
        var 
$title$url$description
        
        function 
RssItem ($xml){ 
            
$this->populate ($xml); 
        } 
        
        function 
populate ($xml){ 
            
preg_match ("/<title> (.*) <\/title>/xsmUi"$xml$matches); 
            
$this->title $matches[1]; 
            
preg_match ("/<link> (.*) <\/link>/xsmUi"$xml$matches); 
            
$this->url $matches[1]; 
            
preg_match ("/<description> (.*) <\/description>/xsmUi"$xml$matches); 
            
$this->description $matches[1]; 
    } 
        
    function 
get_title (){ 
        return 
iconv('UTF-8''ISO-8859-1'$this->title);
        } 
    
        function 
get_url (){ 
        return 
iconv('UTF-8''ISO-8859-1'$this->url); 
        } 
        
        function 
get_description (){ 
            return 
iconv('UTF-8''ISO-8859-1'$this->description); 
        } 
    } 


//Ejemplo de como usarlo
$rss = new RssReader ("http://www.cinemundo.cl/cines/roble/feed/"); 
    
    foreach (
$rss->get_items () as $item){ 
        
printf ('<div><a href="%s">%s</a><br />%s<br /><br />',
        
html_entity_decode($item->get_url ()),
        
html_entity_decode($item->get_description ()),
        
html_entity_decode($item->get_title ())); 
        
printf ('</div>');
         
 

    } 

el rss contiene lo que quiero la informacion rss de otra web pero no me entrega las imagenes es por eso que quiero mesclarla con el primer codigo
  #2 (permalink)  
Antiguo 12/08/2012, 18:46
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: obtener la url de una imagen de otro sitio web

Ya tienes el código para sacar una imagen de otro sitio y meterlo a la clase no es muy complicado. La pregunta es de donde quieres sacar la imagen? Te dejo un ejemplo rápido pero no funcional 100% hasta no saber el origen de la imagen. (Dejo las líneas que faltan por completar comentadas)

Código PHP:
Ver original
  1. <?php
  2. class RssReader
  3. {
  4.     var $url;
  5.     var $data;
  6.     function RssReader($url) {
  7.         $this->url;
  8.         $this->data = implode("", file($url));
  9.     }
  10.     function get_items() {
  11.         preg_match_all("/<item .*>.*<\/item>/xsmUi", $this->data, $matches);
  12.         $items = array();
  13.         foreach ($matches[0] as $match) {
  14.             $items[] = new RssItem($match);
  15.         }
  16.         return $items;
  17.     }
  18. }
  19. class RssItem
  20. {
  21.     var $title, $url, $description, $imgs;
  22.     function RssItem($xml) {
  23.         $this->populate($xml);
  24.     }
  25.     function populate($xml) {
  26.         preg_match("/<title> (.*) <\/title>/xsmUi", $xml, $matches);
  27.         $this->title = $matches[1];
  28.         preg_match("/<link> (.*) <\/link>/xsmUi", $xml, $matches);
  29.         $this->url = $matches[1];
  30. /***********************************************************************/
  31.         $doc = new DOMDocument();
  32.         $doc->loadHTML(file_get_contents($this->url)); //debe ir la url en donde esta la imagen
  33.         $xpath = new DOMXPath($doc);
  34.         $this->imgs = $xpath->query('//td[@id="img_primary"]/a/img')->item(0)->getAttribute('src'); //varia según en donde esté la imagen
  35. /***********************************************************************/
  36.         preg_match("/<description> (.*) <\/description>/xsmUi", $xml, $matches);
  37.         $this->description = $matches[1];
  38.     }
  39.     function get_title() {
  40.         return iconv('UTF-8', 'ISO-8859-1', $this->title);
  41.     }
  42.     function get_url() {
  43.         return iconv('UTF-8', 'ISO-8859-1', $this->url);
  44.     }
  45.     function get_img() {
  46.         return iconv('UTF-8', 'ISO-8859-1', $this->imgs);
  47.     }
  48.     function get_description() {
  49.         return iconv('UTF-8', 'ISO-8859-1', $this->description);
  50.     }
  51. }
  52.  
  53. $rss = new RssReader("http://www.cinemundo.cl/cines/roble/feed/");
  54.  
  55. foreach ($rss->get_items() as $item) {
  56.     printf('<div><img src="%s" /><a href="%s">%s</a><br />%s<br /><br />',
  57.     html_entity_decode($item->get_img()), html_entity_decode($item->get_url()),
  58.     html_entity_decode($item->get_description()), html_entity_decode($item->get_title()));
  59.     printf('</div>');
  60. }

PD: No me gustan las clases que usan expresiones regulares, quedaría mejor todo con DOM.

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
  #3 (permalink)  
Antiguo 13/08/2012, 06:30
Avatar de topo_bionico  
Fecha de Ingreso: junio-2012
Mensajes: 89
Antigüedad: 11 años, 10 meses
Puntos: 20
Respuesta: obtener la url de una imagen de otro sitio web

Cita:
Iniciado por andresdzphp Ver Mensaje
Ya tienes el código para sacar una imagen de otro sitio y meterlo a la clase no es muy complicado. La pregunta es de donde quieres sacar la imagen? Te dejo un ejemplo rápido pero no funcional 100% hasta no saber el origen de la imagen. (Dejo las líneas que faltan por completar comentadas)

Código PHP:
Ver original
  1. <?php
  2. class RssReader
  3. {
  4.     var $url;
  5.     var $data;
  6.     function RssReader($url) {
  7.         $this->url;
  8.         $this->data = implode("", file($url));
  9.     }
  10.     function get_items() {
  11.         preg_match_all("/<item .*>.*<\/item>/xsmUi", $this->data, $matches);
  12.         $items = array();
  13.         foreach ($matches[0] as $match) {
  14.             $items[] = new RssItem($match);
  15.         }
  16.         return $items;
  17.     }
  18. }
  19. class RssItem
  20. {
  21.     var $title, $url, $description, $imgs;
  22.     function RssItem($xml) {
  23.         $this->populate($xml);
  24.     }
  25.     function populate($xml) {
  26.         preg_match("/<title> (.*) <\/title>/xsmUi", $xml, $matches);
  27.         $this->title = $matches[1];
  28.         preg_match("/<link> (.*) <\/link>/xsmUi", $xml, $matches);
  29.         $this->url = $matches[1];
  30. /***********************************************************************/
  31.         $doc = new DOMDocument();
  32.         $doc->loadHTML(file_get_contents($this->url)); //debe ir la url en donde esta la imagen
  33.         $xpath = new DOMXPath($doc);
  34.         $this->imgs = $xpath->query('//td[@id="img_primary"]/a/img')->item(0)->getAttribute('src'); //varia según en donde esté la imagen
  35. /***********************************************************************/
  36.         preg_match("/<description> (.*) <\/description>/xsmUi", $xml, $matches);
  37.         $this->description = $matches[1];
  38.     }
  39.     function get_title() {
  40.         return iconv('UTF-8', 'ISO-8859-1', $this->title);
  41.     }
  42.     function get_url() {
  43.         return iconv('UTF-8', 'ISO-8859-1', $this->url);
  44.     }
  45.     function get_img() {
  46.         return iconv('UTF-8', 'ISO-8859-1', $this->imgs);
  47.     }
  48.     function get_description() {
  49.         return iconv('UTF-8', 'ISO-8859-1', $this->description);
  50.     }
  51. }
  52.  
  53. $rss = new RssReader("http://www.cinemundo.cl/cines/roble/feed/");
  54.  
  55. foreach ($rss->get_items() as $item) {
  56.     printf('<div><img src="%s" /><a href="%s">%s</a><br />%s<br /><br />',
  57.     html_entity_decode($item->get_img()), html_entity_decode($item->get_url()),
  58.     html_entity_decode($item->get_description()), html_entity_decode($item->get_title()));
  59.     printf('</div>');
  60. }

PD: No me gustan las clases que usan expresiones regulares, quedaría mejor todo con DOM.

Saludos.
Me parece que lo que quiere es obtener los enlaces de las imágenes del feed para poder mostrarlas.
Si es así, hay que pasarle a la función que extrae el url de las imágenes el contenido de la etiqueta <description>, porque el feed esta en formato XML y esa es la etiqueta que contiene el post.
  #4 (permalink)  
Antiguo 13/08/2012, 14:31
Avatar de newmesis  
Fecha de Ingreso: octubre-2010
Ubicación: Chillán, Chile, Chile
Mensajes: 42
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: obtener la url de una imagen de otro sitio web

Cita:
Iniciado por topo_bionico Ver Mensaje
Me parece que lo que quiere es obtener los enlaces de las imágenes del feed para poder mostrarlas.
Si es así, hay que pasarle a la función que extrae el url de las imágenes el contenido de la etiqueta <description>, porque el feed esta en formato XML y esa es la etiqueta que contiene el post.

muchas gracias por responder ,
si es asi. quiero sacar la url de acuerdo al resultado que me da el feed
el feed me da la url y esa url contiene una foto que se encuentra en la exprecion regular
sacar la url y agregarsela al foreach del feed
  #5 (permalink)  
Antiguo 22/08/2012, 09:42
Avatar de HackGhost  
Fecha de Ingreso: marzo-2012
Ubicación: En la pesadilla de mis enemigos
Mensajes: 114
Antigüedad: 12 años, 1 mes
Puntos: 23
Respuesta: obtener la url de una imagen de otro sitio web

hola... si todavia no lo resolviste tal vez esto te podria ayudar
Código PHP:
Ver original
  1. <?php
  2.    
  3.     class RssReader {
  4.         var $url;
  5.         var $data;
  6.        
  7.         function RssReader ($url){
  8.             $this->url;
  9.             $this->data = implode ("", file ($url));
  10.         }
  11.        
  12.         function get_items (){
  13.             preg_match_all("/<item .*>.*<\/item>/xsmUi", $this->data, $matches);
  14.             $items = array ();
  15.             foreach ($matches[0] as $match){
  16.                 $items[] = new RssItem ($match);
  17.             }
  18.             return $items;
  19.         }
  20.     }
  21.    
  22.     class RssItem {
  23.         var $title, $url, $description,$img;
  24.        
  25.         function RssItem ($xml){
  26.             $this->populate ($xml);
  27.         }
  28.        
  29.         function populate ($xml){
  30.             preg_match ("/<title> (.*) <\/title>/xsmUi", $xml, $matches);
  31.             $this->title = $matches[1];
  32.             preg_match ("/<link> (.*) <\/link>/xsmUi", $xml, $matches);
  33.             $this->url = $matches[1];
  34.             preg_match ("/<description> (.*) <\/description>/xsmUi", $xml, $matches);
  35.             $htmlDescription = $matches[1];
  36.             preg_match ("/src=\" (.*) \"/xsmUi", $htmlDescription, $matches);//buscamos la url de la imagen
  37.             $this->img = $matches[1];
  38.             preg_match ("/<p> (.*) <\/p>/xsmUi", $htmlDescription, $matches);//buscamos la descripcion de la noticia
  39.             $this->description = $matches[1];
  40.     }
  41.        
  42.         function get_title (){
  43.             return $this->title;
  44.         }
  45.    
  46.         function get_url (){
  47.             return $this->url;
  48.         }
  49.        
  50.         function get_description (){
  51.             return $this->description;
  52.         }
  53.        
  54.         function get_img (){
  55.             return $this->img;
  56.         }
  57.     }
  58.    
  59.     //puede haber problemas con la codificacion... resolver con iconv('UTF-8', 'ISO-8859-1',$cadena)
  60. ?>

es la misma clase que utilizaste o encontraste... le agregue algo mas para que saque la url de la imagen que viene en <description></description>.. OJO esto lo que hace es buscar cualquier cadena que este entre src=" " ..

ejemplo de <description>
Código HTML:
Ver original
  1. <description>
  2. <![CDATA[
  3. <img src="images/imagen.jpg">
  4. <p>descripcion, noticia o lo que sea</p>
  5. ]]>
  6. </description>

Esta fue la estructura en el cual me base para hacer el codigo...
__________________
Recursos para diseñadores
lacatedradeboris.com

Etiquetas: html, imagenes, url
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 05:58.