OVH Cloud OVH Cloud

nettoyer un nom de fichier

2 réponses
Avatar
david
Bonjour,

Par un upload, je récupere des fichiers sur mon serveur.

Je recherche une fonction me permettant de modifier le nom du fichier :

- supprimer les espaces ou les remplacer par des _
- remplacer les lettres accentuées par des lettres non accentuées
- supprimer tous les caracteres indésirables : comme & ~ ' etc...

Merci par avance

2 réponses

Avatar
Olivier Miakinen

Je recherche une fonction me permettant de modifier le nom du fichier :


rename()

- supprimer les espaces ou les remplacer par des _


Au choix :

str_replace()
strtr()
preg_replace()

- remplacer les lettres accentuées par des lettres non accentuées


Au choix :

str_replace()
strtr()
preg_replace()

- supprimer tous les caracteres indésirables : comme & ~ ' etc...


Au choix :

str_replace()
preg_replace()

Merci par avance


Références (RTFM) :

http://fr.php.net/manual/fr/ref.filesystem.php
http://fr.php.net/manual/fr/function.rename.php

http://www.php.net/manual/fr/ref.strings.php
http://www.php.net/manual/fr/function.str-replace.php
http://www.php.net/manual/fr/function.strtr.php

http://www.php.net/manual/fr/ref.pcre.php
http://www.php.net/manual/fr/function.preg-replace.php

Avatar
CrazyCat
Je recherche une fonction me permettant de modifier le nom du fichier :


Voila une fonction que j'utilise pour faire de l'url-rewriting:

function clean($badstring)
$pattern = Array("é", "è", "ê", "ç", "à", "â", "î", "ï", "ù", "ô");
$rep_pat = Array("e", "e", "e", "c", "a", "a", "i", "i", "u", "o");
$cleaned= str_replace($pattern, $rep_pat, $badstring);
$file_bad = array("@-@", "@_@", "@[^A-Za-z0-9_ ]@", "@ +@");
$file_good = array(" ", " ", "", " ");
$cleaned= preg_replace($file_bad, $file_good, $cleaned);
$cleaned= str_replace(" ", "_", trim($cleaned));
return $cleaned;
}

J'aurais pu mettre les caractères accentués dans le preg_replace...

--
Astuces pour webmasters: http://www.crazycat.info
Tchat francophone: http://www.crazy-irc.net