Page 1 sur 1

Renommer correctement un fichier uploadé conforme à une URL

Posté : 01 févr. 2024, 17:30
par ChrisCMoi62
Bonjour,
Je voudrai recommer le nom d'un fichier uploadé afin que celui-ci soit conforme à une URL, donc pas d'accent, ni d'espace etc.
Dans mon script les lettres avec accent sont supprimées, je n'arrive pas à trouver mon problème.
Merci de votre aide.

Code : Tout sélectionner

$nouv_photo = strtr($photo,'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ','AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy'); $nouv_photo = preg_replace('/([^.a-z0-9]+)/i', '-', $photo); if ( move_uploaded_file( $tmp_file1, $rep_photo . $nouv_photo ) ) {}

Re: Renommer correctement un fichier uploadé conforme à une URL

Posté : 01 févr. 2024, 18:16
par Spols
Salut
regarde le nom de tes variables et pose toi la question de savoir si tu utilise la bonne à chaque ligne

Re: Renommer correctement un fichier uploadé conforme à une URL

Posté : 01 févr. 2024, 18:49
par ChrisCMoi62
Je donne mon code détaillé, je ne suis pâs expert et je ne comprends pas tout désolé

Code : Tout sélectionner

$photo = $_FILES[ 'photo' ][ 'name' ]; $tmp_file1 = $_FILES[ 'photo' ][ 'tmp_name' ]; $file1 = $_FILES[ 'photo' ][ 'type' ]; $file_type1 = $photo; $file_type_length1 = strlen( $file_type1 ) - 3; $file_type1 = substr( $file_type1, $file_type_length1 ); $file_type1 = strtolower( $file_type1 ); $nouv_photo = strtr($photo,'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ','AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy'); $nouv_photo = preg_replace('/([^.a-z0-9]+)/i', '-', $photo);

Re: Renommer correctement un fichier uploadé conforme à une URL

Posté : 01 févr. 2024, 23:11
par two3d
Tu attribut deux fois quelque chose à la variable $nouv_photo.

$nouv_photo = preg_replace('/([^.a-z0-9]+)/i', '-', $photo);
$nouv_photo = preg_replace('/([^.a-z0-9]+)/i', '-', $nouv_photo);

Sinon, je te propose ce script pour renommer le nom d'un fichier uploadé.

Re: Renommer correctement un fichier uploadé conforme à une URL

Posté : 02 févr. 2024, 00:04
par @rthur
Moi j'utilise la fonction suivante qui fait une translitération quelque soit la langue et les caractères utilisés, puis derrière le trim(preg_replace() permet de sécuriser le tout pour être sûr de n'avoir que des chiffres et des lettres au final :
<?php
function slugify(string $str, string $sep = '-'): string{
    return trim(
        preg_replace('/[^a-z0-9]+/', $sep, 
           \transliterator_transliterate("Any-Latin; Latin-ASCII; Lower()", $str)
       ), $sep);
}

echo slugify("@Pierre est complètement dingue d'œuf ! #egg En Suédois : ø æ ; En japonais : 字");
// affiche pierre-est-completement-dingue-d-oeuf-egg-en-suedois-o-ae-en-japonais-zi

Re: Renommer correctement un fichier uploadé conforme à une URL

Posté : 02 févr. 2024, 00:07
par two3d
Trop bien ! Merci pour le partage :)

Re: Renommer correctement un fichier uploadé conforme à une URL

Posté : 02 févr. 2024, 10:50
par ChrisCMoi62
Super, merci pour votre aide ;-)