Bonjour à tous,

J'ai besoin d'une fonction pour extraire les url des images d'une page HTML et de tester leur présence sur un serveur distant. Voici comment j'ai procédé :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
$page = "ma-page-a-scanner.html";
 
function is_image_exists ($url)
{
       if (@fclose(@fopen($url, 'r'))) {
                return true;
        } else {
                return false;
        }
}
 
function scan_images($page){
$scan = file_get_contents($page);
preg_match_all('#src="(.*)"#U', $scan, $match);
foreach($match[0] as $val){
$im = str_replace('src="', '', $val); //un seul regex suffirait sans doute mais je n'ai pas trouvé
$img = str_replace('"', '', $im); // encore un tour de trop ?
 
if(!is_image_exists($img)){
           return false;
	}
}
return true;
}
Je précise : le but n'est pas de lister toutes les images en "404" (dommage mais vraiment trop gourmand) mais de retourner false à la 1ere image non trouvée.
Pour la fonction is_image_exists, j'ai testé également getimagesize, ce n'est plus rapide. Testé aussi avec CURL : pas mieux.
Telles quelles ces fonctions mettent environ 15 secondes pour parser 37 URL dont aucune ne retourne false. Peut-on mieux faire ?
Et, quand même, peut-on retourner un tableau de toutes les images false sans plomber le serveur ?
D'avance merci.