2017-04-25 2 views
2

Je dois renommer beaucoup d'images dans un dossier, c'est-à-dire leur donner des noms uniques.comment obtenir différents noms uniques

$path = "../images/"; 
$items = glob($path . '*.jpg'); 
foreach($items as $img) { 

$old = substr($img, 3); 
$new = 'images/' . uniqid() . '.jpg'; 
echo $new . '<br>'; 

Résultat - toutes $new variables sont les mêmes - images/58fee748d3c93.jpg

Comment obtenir des noms uniques?

+1

Peut-être que vous pouvez utiliser la fonction phps [rand] (http://nl3.php.net/manual/en/function.rand.php). –

+0

@JasonJoslin, essayez mon code pls, et vous pouvez voir - il n'y a pas de noms uniques. Tous les noms sont identiques. – bonaca

+0

@bonaca question intéressante! M'a rendu curieux de savoir pourquoi uniqid() ne génère pas un identifiant unique et j'ai trouvé ce message. Seulement poster en cas vous ou d'autres étaient curieux comme moi. http://stackoverflow.com/a/29974344/6208463 –

Répondre

3

utilisation md5(date('dmyhis')).'.jpg'; ou

md5(date('dmy').uniqid().date('his')).'.jpg';` 

cela rendrait plus unique et de faire il a l'air aléatoire

EDIT

md5(date('dmy').rand(10).date('his')).rand(0,15).'.jpg';` 
+0

Cela semblerait une réponse parfaite comme md5 crée des chaînes de ramdom ajoutées avec deux dates et uniqid(). – Pupil

+0

Veuillez essayer - toutes les variables '$ new' sont à nouveau identiques. – bonaca

+0

ohh votre l'utiliser dans une boucle mon mauvais 'md5 (rand (10) .rand (10) .date ('son')) '. Jpg';' –

1
what about like this you have have images name that can access easily. 
$path = "../images/"; 
$items = glob($path . '*.jpg'); 
$name="any-good-name-"; 
$counter=0; 
foreach($items as $img) { 
$old = substr($img, 3); 
$new = 'images/'.$name.$counter'.jpg'; 
echo $new . '<br>'; 
$counter++; 
} 
+0

bien mais ce n'est pas une solution pour moi, car plus tard j'ai besoin de télécharger d'autres images dans le même dossier et de leur donner un nom unique aussi. – bonaca

+0

$ name = uniqid(). "- any-good-name-"; alors vous pouvez essayer ceci ce sera chose plus simple que n'importe quel –

3

essayer d'ajouter rand() en identifiant unique comme

uniqid(rand()) 

fonctionne bien pour moi