passe deux fois sur les même fichier en lisant un dossier
Posté : 17 avr. 2007, 14:26
Bonjour,
Quand le script est lu une première fois, il renomme toutes les images comme prévu, mais ensuite repasse une deuxième fois sur les images, et incrémente donc le numéro dont elle ont déjà.
Au totale si j'ai 4 image dans le dossier il m'en renomme huit.
Par contre si je relance le script tout de suite après, ben il me renomme les image en passant qu'une seule fois.
J'y comprends plus rien.
Merci d'avance pour votre aide.
David.
<?php
function ext($f){
$exta =strtolower(end( explode('.', $f)));
return $exta;
}
function countSplit ($sc){
$sc= preg_replace('/\W$/', '', $sc);
$expchr=explode ('\\', $sc);
$sc=end($expchr);
return $sc;
}
//_____variables_______________________________________________________________
$i=0;
$o='20';
$chem="imagedir\HDT\\";
//_________________________________________
if ( is_dir ($chem)){
$handle = opendir($chem);
while (false !== ($renam = readdir($handle))) {
if ($renam !== "." && $renam!== ".." && $renam !=="Thumbs.db"){
$listimg= array($renam);
$count=count($listimg);
echo $count;
foreach ( $listimg as $num=>$name){
$name_type=ext ($name);
$oldf=$chem.$name;
$r = str_pad($o, 5, "0", STR_PAD_LEFT);
$newname='HDT'.$r.'.tif';
$newf=$chem.$newname;
if ( $name_type=='tif'|'tiff' && !file_exists ($newf)){
rename ("$oldf", "$newf");
$nf= countSplit ($newf);
echo'---new name:'.$nf.'<br>';
$o++;
}elseif (is_dir ($oldf)){
echo $oldf .": is a folder.<br>";
}else{
echo $name.": is not valid<br>";
}
}
}
}
closedir ($handle);
}else{
echo "dir isn't correct.";
}
?>
Ce script est fait pour renommer un paquet d'image dans un dossier.Quand le script est lu une première fois, il renomme toutes les images comme prévu, mais ensuite repasse une deuxième fois sur les images, et incrémente donc le numéro dont elle ont déjà.
Au totale si j'ai 4 image dans le dossier il m'en renomme huit.
Par contre si je relance le script tout de suite après, ben il me renomme les image en passant qu'une seule fois.
J'y comprends plus rien.
Merci d'avance pour votre aide.
David.