Fonction rename caractères speciaux

Signaler
Messages postés
68
Date d'inscription
samedi 31 mai 2003
Statut
Membre
Dernière intervention
15 septembre 2007
-
Messages postés
68
Date d'inscription
samedi 31 mai 2003
Statut
Membre
Dernière intervention
15 septembre 2007
-
Salut,

J'utilise la fonction rename pour renommer mes fichiers mp3.

rename($ancien,$nouveau);

Cela fonctionne très bien sauf quand j'ai le caractère; "&" dans $ancien ou $nouveau.

Question comment "echapper" les caractères spéciaux dans cette fonction?

Merci d'avance!

JMKPROD

6 réponses

Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
Hello,

ça doit être une question d'encodage, essaie rename(utf8_decode($nouveau));
à+
Messages postés
68
Date d'inscription
samedi 31 mai 2003
Statut
Membre
Dernière intervention
15 septembre 2007

Salut Evangun, j'ai déjà testé "utf8_decode" ça ne fonctionne pas.
Merci quand même!

JMKPROD
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Hello,

essaye urlencode(), on ne sait jamais.
Messages postés
68
Date d'inscription
samedi 31 mai 2003
Statut
Membre
Dernière intervention
15 septembre 2007

Salut malalam, j'ai déjà testé "urlencode" ça ne fonctionne pas.
Merci quand même!

Je joins mon code si ça peut aider:
--------------------------------------
if(isset($_POST['ancien'])){$ancien=$_POST['ancien'];}
 if(isset($_POST['nouveau'])){$nouveau=$_POST['nouveau'];}
 if(isset($_POST['dos'])){$dos=$_POST['dos'];}//chemin du dossier
 
 $nouveau=stripslashes($nouveau);
 $nouveau=utf8_decode($nouveau);
 
 $ancien=stripslashes($ancien);
 $ancien=utf8_decode($ancien);
 
 $dos=stripslashes($dos);
 $dos=utf8_decode($dos);
 
 rename($ancien,$dos."temp.mp3");
 rename($dos."temp.mp3",$nouveau);
 echo "ok";
-------------------------------------------

Si windows le fait PHP doit pouvoir le faire!!!

JMKPROD
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
avec ton stripslashes tu enlèves peut-être des backslashes alors que tu ne devrais pas ?
fais echo sur $ancien, $dos."temp.mp3", $dos."temp.mp3" et $nouveau pour voir...
Messages postés
68
Date d'inscription
samedi 31 mai 2003
Statut
Membre
Dernière intervention
15 septembre 2007

"addslashes" est sans effet sur "&", il est utilisé pour transférer en AJAX ancien et nouveau correctement (cas de l'apostrophe par exemple). Je suis donc obligé d'utiliser "stripslashes" pour récupérer ancien et nouveau.
J'ai quand même fait un test avec un "\&" dans le nom et sans utiliser "stripslashes", ça ne fonctionne pas, un backslashes dans un chemin de fichier ça ne le fait pas!

Merci quand même Evangun!

JMKPROD