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 :

Supprimer les caractères spéciaux des noms de fichiers


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2014
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Supprimer les caractères spéciaux des noms de fichiers
    Bonjour à tous,

    J'utilise la commande suivante pour supprimer tous les caractères spéciaux des noms de fichiers à l'exception de ".", "@", "/", " ", "_", "-", "é" et "è".

    Je travaille sur Mac et sur Mac les accents sont codés de la façon suivante :

    "é" = 65cc81 en hexa
    "è" = 65cc80 en hexa

    Voilà la commande que j'utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    e='s,[^A-Za-z0-9.@/ _\xCC\x80\x81-],,g'; find . | while read f;do c=`basename "$f"`; b=`echo ${f%$c} | sed "$e"`; rename -v "$e" "$b`basename "$f"`"; done

    Le problème, c'est que mon expression régulière reconnais indépendamment les caractères \x65, \xCC, \x80 et \x81. Alors que je voudrais que mon expression régulière reconnaisse exactement le groupe de caractère \x65\xCC\x81 et \x65\xCC\x80 mais je ne sais pas comment faire.

    A l'aide. Merci à tous pour votre aide.

  2. #2
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    L'idée est de les chercher avant la classe de caractères et d'utiliser un groupe de capture pour pouvoir les réinjecter dans la pattern de remplacement. Je n'ai pas tester la syntaxe exacte (doit-on échapper les caractères spéciaux sur ta version de sed?) mais tu dois pouvoir t'en tirer avec un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    s,\(\x65\xCC[\x81\x80]\)\|[^A-Za-z0-9.@/ _-],\1,g
    Après, je ne sais pas si ça existe sous mac et si celà peut résoudre un problème plus général qui serait cacher derrière ta question, mais sous linux (et probablement sous mac) il existe un utilitaire (à installer) qui s'appelle convmv qui permet de renommer des fichiers en changeant le jeu de caractères utilisé.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  3. #3
    Membre habitué Avatar de denissay
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 103
    Points : 125
    Points
    125
    Par défaut
    Tu peux utiliser leurs code unicode \x** où le ** est le code unicode correspondant...

    Si ce dernier compte plus de 2 charactères (en ignorant les 0 à gauche), il faudra le mettre entre accolades \x{**}

    la liste complète pourra être trouvé ICI

    Dans ton cas alors, ça devient:

    /[^A-Za-z0-9.@/ _\xe9\x{e8}-]/gu
    DEMO
    Une réponse utile vous a aidé ? N'oubliez pas le
    Votre problème est résolu ? N'oubliez pas le

  4. #4
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2014
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Ca ne fonctionne pas car dans mon cas les accents sont codés avec 65cc81 et 65cc80 et non e9 et e8.

    Quand je modifie mon expression régulière comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [^A-Za-z0-9.@/ _\x{65cc80}\x{65cc81}-]
    Il m'enlève cc80 et cc81 mais garde bien le 65 ce qui fait qu'il me reste des e sans accents alors que je dois les conserver...

    A l'aide plz

  5. #5
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2014
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Personne pour m'aider ??

Discussions similaires

  1. Problème pour supprimer les caractères spéciaux des noms de fichiers
    Par Steph84563 dans le forum Shell et commandes POSIX
    Réponses: 0
    Dernier message: 15/04/2014, 10h28
  2. supprimer les espaces d'un nom de fichier
    Par Joey5 dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 07/11/2008, 11h56
  3. Supprimer les caractères spéciaux
    Par sami_c dans le forum Langage
    Réponses: 4
    Dernier message: 09/09/2008, 13h12
  4. Supprimer les caractères spéciaux
    Par snopims dans le forum C#
    Réponses: 8
    Dernier message: 08/08/2008, 15h33
  5. [Jsp] Supprimer les caractère spéciaux d'une chaine
    Par PeteMitchell dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 13/05/2004, 11h11

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