Hello,
Si ton document est un HTML, je te recommande de jeter un coup d'oeil à l'extension DOMDocument :
http://php.net/manual/fr/class.domdocument.php
Normalement tu devrais pouvoir lui demander de te renvoyer les tags "<img>"
Au-delà tu devrais même pouvoir lui demander de te retourner le contenu des attributs "src" de tes tags img, sur le contenu de l'attribut tu fais un coup de strpos() en cherchant 'http://' et ça devrait faire le job...
Pour récupérer l'extention de tes fichiers je sais qu'en général ce que je fais c'est:
$asUrlContent = explode('/', $sUrl);
$sFileName = $asUrlContent[count($asUrlContent) - 1];
$asExtention = explode('.', $sFIleName);
$sExtention= $asExtention[count($asExtention) - 1];
Alors c'est pas forcément super joli et une expression régulière bien barrée peut faire la même chose en 1 seule ligne de code. Mais ce code à l'avantage de fonctionner même si tu as des fichiers qui ont des noms avec des '.' : image.qui.peut.exister.sur.internet.jpg
Après pour ta mécanique d'enregistrement des images pour savoir si elles ont déjà été enregistrées, tu peux en effet faire un coup de md5 sur l'url de l'image, le désavantage de cette technique est que tu ne peux pas retrouver l'url d'origine (sauf à faire une table de transco entre clé md5 et url)
Une fois que tu as fais tout ce que tu voulais avec l'image, tu met à jour ton Node récupéré lors de la recherche des tags img et tu utilise encore DOMDocument pour faire un save...
Normalement ca devrait le faire tout ça...