IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Trouver les caractères spéciaux dans le nom d'un fichier


Sujet :

Langage PHP

  1. #21
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 257
    Points : 97
    Points
    97
    Par défaut
    Citation Envoyé par Sebastien14 Voir le message
    L'encodage concerne le fichier, vérifie l'encodage de ton fichier côté hebergeur
    Avec filezilla par ex ?
    Je n'y ai pas trouvé de propriété sur le fichiers .
    "Ils ne savaient pas que c'était impossible, alors ils l'ont fait." Mark Twain

  2. #22
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 257
    Points : 97
    Points
    97
    Par défaut
    Avec fileZilla par exemple ?
    Je n'y ai pas trouvé de propriétés sur les fichiers.
    je l'ai déjà dit pardon, (on est sur la page deux, j'avais pas vu)
    "Ils ne savaient pas que c'était impossible, alors ils l'ont fait." Mark Twain

  3. #23
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 257
    Points : 97
    Points
    97
    Par défaut
    Peut-être modifier le type de transfert sur FZ ?
    Il y a
    • Auto
    • ASCII
    • Binaire
    "Ils ne savaient pas que c'était impossible, alors ils l'ont fait." Mark Twain

  4. #24
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 257
    Points : 97
    Points
    97
    Par défaut
    J'ai capté un indice:
    sur le serveur en ligne,
    il repère les parenthèses dans les noms de fichiers,
    c'est les accents qu'il ne trouve pas.
    En local il trouve les deux.
    "Ils ne savaient pas que c'était impossible, alors ils l'ont fait." Mark Twain

  5. #25
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2008
    Messages : 294
    Points : 333
    Points
    333
    Par défaut
    Selon moi l'encodage de ton fichier ne peut pas changer lorsque tu l’envois chez ton hébergeur.

  6. #26
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 257
    Points : 97
    Points
    97
    Par défaut
    Salut,
    Oui, je ne vois pas comment ni pourquoi l'encodage changerait.

    Alors un truc délire:
    En local (Wamp, FF)
    • Il trouve les accents

    Sur le serveur
    • Il supprime les accents

    Ca me convient si ca marche.

    Si certains veulent en discuter,
    je laisse la discution ouverte un petit moment.
    "Ils ne savaient pas que c'était impossible, alors ils l'ont fait." Mark Twain

  7. #27
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    tu aurais surtout intérêt à faire un renommage systématique des fichiers, pour supprimer tous les accents et caractères spéciaux susceptibles d'entraîner des problèmes.

  8. #28
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 257
    Points : 97
    Points
    97
    Par défaut
    Ben ouais,
    je comprends bien, c'est justement le sujet de cette discussion.

    Mais comme je disais,
    en local il trouve les accents,
    en ligne il les supprime direct.

    Comment ferais-tu, toi ?
    "Ils ne savaient pas que c'était impossible, alors ils l'ont fait." Mark Twain

  9. #29
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par feelwatt Voir le message
    ...il trouve
    ...il les supprime...
    Qui ça ? Le pape ?

    Tu ne nous a pas montré un exemple concret :
    • fichier zip original (contenant les images)
    • à quoi ressemblent les noms (originaux) des images ?
    • comment tu les récupères ? (script ?...)
    • à quoi ressemblent les noms APRES dézip/récupération ?
    • ...


    Concernant l'encodage "tout UTF-8"

    Fichiers encodés/convertis en "UTF-8 sans BOM" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php header('Content-type:text/html; charset=UTF-8');	// encodage UTF-8 ?>
    <!DOCTYPE HTML>
    <html lang="fr">
    <head>
    	<meta charset="utf-8" />
    [EDIT] Je viens de modifier les noms de plus de 7000 fichiers images, avec ces fonctions de mon cru :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    <?php
    // --------------------------------------------------------------
    // FONCTION : FORMATAGE du nom des FICHIERS (photos/vidéos/...) pour enregistrement dans DOSSIER
    // --------------------------------------------------------------
    function formatage_nom_fichier( $chaine )
    {
    	$sep				= '-'; 								// séparateur
    	$let				= 0; 								// nombre de lettres mini par mot
    	// remplacement : caractères accentués et espace
    	$chaine 			= str_replace('039', '-', $chaine); // apostrophe
    	$chaine				= html_entity_decode( $chaine ); 		// Convertit les entités HTML spéciales en caractères
    	$chaine				= urldecode( $chaine ); 				// Convertit les entités URL spéciales en caractères
    	$chaine 			= formatage_sans_accent( $chaine );
    	// -----------------
    	$chaine				= utf8_decode( $chaine ); 			// Convertit une chaîne UTF-8 en ISO-8859-1
    	$chaine 			= strtolower(stripslashes(trim( $chaine )));
    	$chaine				= strip_tags( $chaine );				// suppression de toutes les balises éventuelles
    	// -----------------
    	// remplacement de tout ce qui n'est pas : LETTRE non accentuées / CHIFFRE / POINT (.)
    	$chaine 			= preg_replace('/([^.a-zA-Z0-9]+)/i', $sep, $chaine);
    	$chaine 			= trim( $chaine );
    	// -----------------
    	// suppression des mots de moins de $let lettres : 
    	if( $let > 0 )
    	{
    		$chaine_array 	= explode($sep, $chaine);
    		$chaine_retour 	= array();
    		foreach( $chaine_array as $mot ){
    		  if( strlen($mot)>$let ){ 	$chaine_retour[] = $mot; }
    		}
    		// concaténation
    		$chaine 		= (empty($chaine_retour)) ? '' : implode($sep, $chaine_retour);
    	}
    	// -----------------
    	// SI la chaine est VIDE / caractères NON roman (ex. : Japonais, Russes...), on remplace par la DATE
    	if( $chaine=='' ){
    		$chaine 		= date('Y'.$sep.'m'.$sep.'d'.$sep.'H'.$sep.'s', time());
    	}
    	// -----------------
    	// suppression des articles
    	$NON_array			= array($sep.'et'.$sep, $sep.'le'.$sep, $sep.'la'.$sep, $sep.'de'.$sep, $sep.'du'.$sep, $sep.'ou'.$sep, $sep.'.');
    	$OUI_array			= array($sep, $sep, $sep, $sep, $sep, $sep, '.');
    	$chaine 			= str_replace($NON_array, $OUI_array, $chaine);
    	// -----------------
    	// FICHIER : raccourcir le nom si trop long (nom 60 caractères maxi + extension 5 caractères maxi)
    	$chaine_name 		= trim(pathinfo($chaine,PATHINFO_FILENAME), $sep);
    	$chaine_ext 		= trim(pathinfo($chaine,PATHINFO_EXTENSION), $sep);
    	$chaine 			= (strlen( $chaine )>60)? trim(substr($chaine_name, 0, 60), $sep).'.'.trim(substr($chaine_ext, 0, 5), $sep) : $chaine;
    	// -----------------
    	$chaine 			= trim($chaine, $sep);
    	$chaine 			= utf8_encode( $chaine ); // Convertit une chaîne ISO-8859-1 en UTF-8
    	return $chaine;
    };
    // --------------------------------------------------------------
    // FONCTION : FORMATAGE sans accents
    // --------------------------------------------------------------
    function formatage_sans_accent( $chaine )
    {
    	$chaine				= html_entity_decode( $chaine ); 		// Convertit les entités HTML spéciales en caractères
    	$chaine 			= trim( $chaine );
    	// -----------------
    	// remplacement : caractères accentués et espace
    	$NON_array 			= array(
    	'À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'Ă', 'Ą',
    	'Ç', 'Ć', 'Č', 'Œ',
    	'Ď', 'Đ',
    	'à', 'á', 'â', 'ã', 'ä', 'å', 'æ', 'ă', 'ą',
    	'ç', 'ć', 'č', 'œ',
    	'ď', 'đ',
    	'È', 'É', 'Ê', 'Ë', 'Ę', 'Ě',
    	'Ğ',
    	'Ì', 'Í', 'Î', 'Ï', 'İ',
    	'Ĺ', 'Ľ', 'Ł',
    	'è', 'é', 'ê', 'ë', 'ę', 'ě',
    	'ğ',
    	'ì', 'í', 'î', 'ï', 'ı',
    	'ĺ', 'ľ', 'ł',
    	'Ñ', 'Ń', 'Ň',
    	'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'Ø', 'Ő',
    	'Ŕ', 'Ř',
    	'Ś', 'Ş', 'Š',
    	'ñ', 'ń', 'ň',
    	'ò', 'ó', 'ô', 'ö', 'ø', 'ő',
    	'ŕ', 'ř',
    	'ś', 'ş', 'š',
    	'Ţ', 'Ť',
    	'Ù', 'Ú', 'Û', 'Ų', 'Ü', 'Ů', 'Ű',
    	'Ý', 'ß',
    	'Ź', 'Ż', 'Ž',
    	'ţ', 'ť',
    	'ù', 'ú', 'û', 'ų', 'ü', 'ů', 'ű',
    	'ý', 'ÿ',
    	'ź', 'ż', 'ž',
    	'А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р',
    	'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'р',
    	'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я',
    	'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я'
    	);
     
    	$OUI_array 			= array(
    	'A', 'A', 'A', 'A', 'A', 'A', 'AE', 'A', 'A',
    	'C', 'C', 'C', 'CE',
    	'D', 'D',
    	'a', 'a', 'a', 'a', 'a', 'a', 'ae', 'a', 'a',
    	'c', 'c', 'c', 'ce',
    	'd', 'd',
    	'E', 'E', 'E', 'E', 'E', 'E',
    	'G',
    	'I', 'I', 'I', 'I', 'I',
    	'L', 'L', 'L',
    	'e', 'e', 'e', 'e', 'e', 'e',
    	'g',
    	'i', 'i', 'i', 'i', 'i',
    	'l', 'l', 'l',
    	'N', 'N', 'N',
    	'O', 'O', 'O', 'O', 'O', 'O', 'O',
    	'R', 'R',
    	'S', 'S', 'S',
    	'n', 'n', 'n',
    	'o', 'o', 'o', 'o', 'o', 'o',
    	'r', 'r',
    	's', 's', 's',
    	'T', 'T',
    	'U', 'U', 'U', 'U', 'U', 'U', 'U',
    	'Y', 'Y',
    	'Z', 'Z', 'Z',
    	't', 't',
    	'u', 'u', 'u', 'u', 'u', 'u', 'u',
    	'y', 'y',
    	'z', 'z', 'z',
    	'A', 'B', 'B', 'r', 'A', 'E', 'E', 'X', '3', 'N', 'N', 'K', 'N', 'M', 'H', 'O', 'N', 'P',
    	'a', 'b', 'b', 'r', 'a', 'e', 'e', 'x', '3', 'n', 'n', 'k', 'n', 'm', 'h', 'o', 'p',
    	'C', 'T', 'Y', 'O', 'X', 'U', 'u', 'W', 'W', 'b', 'b', 'b', 'E', 'O', 'R',
    	'c', 't', 'y', 'o', 'x', 'u', 'u', 'w', 'w', 'b', 'b', 'b', 'e', 'o', 'r'
    	);
     
    	$chaine 			= str_replace($NON_array, $OUI_array, $chaine);
    	// -----------------
    	return $chaine;
    };
    Utilisation :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?php
    formatage_nom_fichier( $chaine );

    N.B. Ces fonctions étant à "usages multiples et variés", il se peut que certaines parties du code ne te servent à rien.
    Dernière modification par Invité ; 25/09/2015 à 19h05.

  10. #30
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 257
    Points : 97
    Points
    97
    Par défaut
    Oui, pardon jreaux62
    Je ne t'ai pas répondu,
    j'étais entre temps sur un autre taf.

    J'avais bien vu ta réponse qui est archi-complète et très poussée. Félicitations !
    Depuis, j'en ai étudié quelques extraits et les ai adapté à mon cas.
    Aussi je me suis dis que comme dans cette appli les personnes doivent uploader leurs images et faire ca proprement.
    J'ai choisi de tester les noms et si je trouve des caractères spéciaux ou accents j'unlink les images.

    En tout cas merci et bravo pour ton code, qui, s'il y avait un trophée des codes les +avancés et les plus utiles
    serait dans les premiers, je pense.
    "Ils ne savaient pas que c'était impossible, alors ils l'ont fait." Mark Twain

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Caractère spéciaux dans un nom de fichier
    Par eddie5150 dans le forum Java ME
    Réponses: 6
    Dernier message: 26/06/2008, 14h52
  2. Caractères spéciaux dans le nom des tables
    Par xx_FiFty_xx dans le forum Requêtes
    Réponses: 4
    Dernier message: 25/06/2008, 12h30
  3. Réponses: 5
    Dernier message: 04/12/2007, 11h00
  4. [RegEx] Caractères spéciaux dans le nom d'une variable
    Par Cartouche dans le forum Langage
    Réponses: 7
    Dernier message: 11/05/2007, 23h51
  5. les caractères spéciaux dans l'url, c'est mal !
    Par _gargamel_ dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 10/05/2007, 16h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo