<?php
$sPath2folder = "downloads";
$aUrls = array(
"
http://www.eksperten.dk/images/eksperten_logo.gif",
"
http://www.google.dk/intl/en_com/images/logo_plain.png",
"
http://dengodekode.dk/xhtml/xhtml.jpg");
$aLog = array();
for ($i=0,$j=count($aUrls); $i<$j; $i++) {
$sUrl = $aUrls[$i];
$sShortUrl = preg_replace("#^http://(.+?)$#", "$1", $sUrl);
$aUrl = explode("/", $sShortUrl);
$sDir = $sPath2folder;
for ($m=1,$n=count($aUrl)-1; $m<$n; $m++) {
$sDir = $sDir."/".$aUrl[$m];
if (!is_dir($sDir)) mkdir($sDir);
}
$sName = $sDir."/".end($aUrl);
// Hvis filen eksisterer, så giv den
// et nyt navn og log begge navne
if (is_file($sName)) {
$sRnd = "p".mt_rand(0, 10000)."_";
$sNewName = $sDir."/".$sRnd.end($aUrl);
$aLog[] = $sName." -> ".$sNewName;
$sName = $sNewName;
}
$sPic = file_get_contents($sUrl);
$fp = fopen($sName, "w");
fwrite($fp, $sPic);
fclose($fp);
}
// Skriv til i logfilen og udskriv denne kørsels dupplikater
if (count($aLog)>0) {
$fp = fopen("log.txt", "a");
$sLog = implode("\r\n", $aLog)."\r\n";
fwrite($fp, $sLog);
fclose($fp);
print "<h3>Har ændret flg. filnavne:</h3><div>".implode("</div><div>", $aLog)."</div>";
}
?>
NB: Læg mærke til, at den afsluttende slash i stien til download mappen er slettet!
Scriptet løber igen array'et igennem. Hver URL strippes for
http://, og der oprettes et array ved at eksplodere over en slash.
I hvert gennemløb kører vi en ekstra løkke, hvor vi tjekker, om mapperne eksisterer lokalt - og opretter dem, hvis de ikke gør.
Hvis to billeder under to forskellige domæner hedder det samme og ligger i mappen
images, som ligger i roden, føjes
p12365_ foran selve filnavnet. Tallet er et tilfældigt tal mellem 0 og 10.000, hvilket formodentlig er nok til at undgå overskrivning.
Samtidigt med omdøbningen skrives navnene ind i et array på formen:
$aLog[] = images/billede.jpg -> images/p9812_billede.jpg
Når alle billeder i array'et er hentet, skrives loggen ud til browseren. Desuden skrives til i en logfil ved navn
log.txt. Da du jo sikkert kører mange filkørsler, skrives loggen for hver kørsel
til i logfilen. Logfilen overskrives ikke ved hver kørsel.
Du kan jo teste ved at køre eksemplet ovenfor tre-fire gange