Récupérer première image d'une url

Résolu
matiou34 Messages postés 200 Date d'inscription   Statut Membre Dernière intervention   -  
matiou34 Messages postés 200 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Via leur API, Embed.ly permet de récupérer les informations d'une url. Pourriez-vous me dire comment font-ils pour récupérer une image ? est-ce que c'est la première ? Si c'est le cas, comment précéder ? Mais cela m'étonnerait car l'image est toujours très pertinente.

Voici leur démo :
http://embedly.github.io/jquery-preview/demo/

Merci de m'éclairer

M.

2 réponses

  1. Utilisateur anonyme
     
    C'est très simple, il suffit de parser le code source du site.
    Tu peux détecter les balises meta ou dans ton cas les balises images.

    A+
    0
  2. matiou34 Messages postés 200 Date d'inscription   Statut Membre Dernière intervention   4
     
    J'ai quelque chose comme ça :

    $url = $_POST["url"];
    
    function fetch_record($path)
    {
    	$file = fopen($path, "r"); 
    	if (!$file)
    	{
    		exit("Problem occured");
    	} 
    	$data = '';
    	while (!feof($file))
    	{
    		$data .= fgets($file, 1024);
    	}
    	return $data;
    }
    
    $string = fetch_record($url);
    
    // fetch images
    $image_regex = '/<img[^>]*'.'src=[\"|\'](.*)[\"|\']/Ui';
    preg_match_all($image_regex, $string, $img, PREG_PATTERN_ORDER);
    $images_array = $img[1];
    $k=1;
    	for ($i=0;$i<=sizeof($images_array);$i++)
    	{
    		if(@$images_array[$i])
    		{
    			if(@getimagesize(@$images_array[$i]))
    			{
    				list($width, $height, $type, $attr) = getimagesize(@$images_array[$i]);
    				if($width >= 200 && $height >= 50 ){
    				
    				echo "<center><img src='".@$images_array[$i]."' max-width='520' id='".$k."' ></center>";
    				
    				$k++;
    				
    				}
    			}
    		}
    	}
    


    Le première c'est que ça m'affiche toutes images faisant plus de 200px. Hors je souhaite seulement récupérer la première.
    Ensuite, le script (en localhost) met vraiment longtemps à s'exécuter. Plus l'url contient des images, plus c'est long. Est-ce dû au fait que je sois en localhost ou est-ce que c'est réellement long à exécuter car il doit parser toute la page ?
    Comment pourrais-je l'alléger ?

    Merci !
    0