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 :

Suppression des accents sur variable


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2013
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2013
    Messages : 176
    Par défaut Suppression des accents sur variable
    Bonjour,

    Je suis en train de faire un transfert de fichier avec la suppression des accents mais cela ne fonctionne pas dans une variable mais seulement avec une chaine. Si vous pouvez me mettre sur la voie, je vous remercie de votre aide. Voilà mon code:

    Code : 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
    <?php
    // DEBUT SUPPRESSION DES ACCENTS
    function suppAccent($lettre)
                {
                    $a = array("ä", "â", "à","á","å","æ","ã","Ä","À","Á","Â","Ã","Ä","Å","Æ");
                    $lettre = str_replace($a, "a", $lettre);
                    $b = array("ß");	
                    $lettre = str_replace($b, "b", $lettre);
                    $c = array("ç","Ç");	
                    $lettre = str_replace($c, "c", $lettre);
                    $d = array("Ð","þ");	
                    $lettre = str_replace($d, "d", $lettre);				
                    $e = array("é", "è", "ê", "ë","ð","È","É","Ê","Ë");
                    $lettre = str_replace($e, "e", $lettre);		
                    $i = array("î","ï","ì","í","Ì","Í","Î","Ï");
                    $lettre = str_replace($i, "i", $lettre);
                    $n = array("ñ","Ñ");
                    $lettre = str_replace($n, "n", $lettre);	
                    $o = array("ö","ô","ò","ó","õ","ø","œ","Ò","Ó","Ô","Õ","Ö","Œ","Ø");
                    $lettre = str_replace($o, "o", $lettre);
                    $s = array("š","Š");
                    $lettre = str_replace($s, "s", $lettre);
                    $u = array("ù","ú","ü","û","Ù","Ú","Û","Ü");
                    $lettre = str_replace($u, "u", $lettre);
                    $y = array("ý","ÿ","Ý","Ÿ");
                    $lettre = str_replace($y, "y", $lettre);
                    $z = array("ž","Ž");
                    $lettre = str_replace($z, "z", $lettre);
                    return $lettre;
                }
    // FIN SUPPRESSION DES ACCENTS
     
    if( isset($_FILES['image']) && $_FILES['image']['error'] == 0)
    {
        if( $_FILES['image']['size'] <= 2000000)
        {
        // si l'extension est autoris&eacute;e
     
                $infosfichier = pathinfo($_FILES['image']['name']);
                $extension_upload = $infosfichier['extension'];
                $extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png');
     
                if (in_array($extension_upload, $extensions_autorisees))
                {  
                $dossier = 'uploads/';
                $fichier = basename($_FILES['image']['name']);
    			$lettre = suppAccent($fichier);
    			$separateur = "_";
    			$nb = mt_rand();
     
                if(move_uploaded_file($_FILES['image']['tmp_name'], $dossier . $nb . $separateur . $lettre)) //Si TRUE
                    {
                        echo '<p>Upload effectu&eacute; avec succ&eacute;s !</p><img src='.$dossier.$nb.$separateur.$lettre.'><p>'.$nb.$separateur.$lettre;
                    }
    			else
                    {
                        echo '<p>Echec de l\'upload !</p>';
                    }
                }
                else
    			{
                    echo '<p>Erreur sur extension de fichier</p>';
                }
        }
        else
        {
            echo '<p>Erreur sur taille fichier<p/>';
        }
    }
    else
    {
        echo '<p>Erreur pr&eacute;sence fichier<p/>';
    }
    ?>

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Ton message est un peu confus.

    Tu veux supprimer des accent dans le contenu d'une variable ou le nom d'une variable ?

    Tu as des variables de ce type ?

  3. #3
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 420
    Par défaut
    Salut,

    Ben normal c'est pas comme cela qu'on utilise str_replace, regardes la doc, comme tu fais ça retourne les caractères remplacés uniquement.

    Et puis ton tableau est insuffisant, il faut supprimer les caractères spéciaux et les espaces vides également.

    Sinon pour l'upload de fichiers tu peux avoir une solution complète ici.
    Bien entendu il y a une fonction automatique pour nettoyer les fichiers mais aussi elle permet l'affichage des informations en temps réel (temps restant, progression graphique etc.), surpasse les limitations serveur "post_max_size" et "upload_max_filesize", permet de reprendre un téléchargement interrompu en utilisant la partie sauvegardée, affichage des vignettes photo si le fichier est une image... Il y a de nombreux exemples tous fonctionnels dans le dossier en téléchargement.

  4. #4
    Membre confirmé
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2013
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2013
    Messages : 176
    Par défaut Suppression des accents sur variable
    Oui je souhaite supprimer les accents dans ma variable et en PHP car je ne souhaite pas utiliser javascript (par pour le moment toujours) alors si ja fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $lettre = suppAccent("émérite");
    cela me retourne bien emerite mais si je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $lettre = suppAccent($fichier);
    et que le fichier image s'appelle émérite.jpg cela me retourne émérite.jpg.

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Il est propable que tu sois face à un problème d'encodage.
    Mais il faudrait savoir dans quel but tu veux retirer les accents. Actuellement ta fonction est assez minimaliste, il manque même ï ou É par exemple.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre confirmé
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2013
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2013
    Messages : 176
    Par défaut Suppression des accents sur variable
    Merci c'est un fait j'ai un problème d'encodage car avec firefox aurora j'ai ce problème alors qu'avec chrome cela fonctionne bien. Y a -t-il un moyen pour faire en sorte que cela fonctionne malgré ce problème d'encodage si par hasard un visiteur pourrait utiliser avec aussi ce problème?

  7. #7
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 420
    Par défaut
    Essaies de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Content-type: text/html; charset=UTF-8');
    en haut de ta page.

    Mais bon comme déjà dit, ta fonction n'est pas suffisante.

    Si tu ne veux pas utiliser le module d'upload que j'ai donné en lien plus haut, tu peux néanmoins te servir des fonctionnalités php développées pour l'upload. Dans le dossier "Php_Upload" et le fichier "UploadAjaxABCIServeur.php" tu trouveras la fonction "CleanFileName" qui permet de retourner un nom de fichier nettoyé compatible avec tous les serveurs.

    Une autre fonction php "RenameIdenticName" pourrait t'intéresser qui permet de renommer un fichier si un fichier de même nom existe déjà sur le serveur. Son intérêt outre le mode suffixe aléatoire est qu'elle peut aussi faire une incrémentation des fichiers (moins facile à faire pour les débutants).

    Faudrait aussi remplacer ta ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (in_array($extension_upload, $extensions_autorisees))
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (in_array(strtolower($extension_upload), $extensions_autorisees))
    pour ne pas jeter les extensions en majuscules.

    Il te restera ensuite à gérer les erreurs de dépassement de "post_max_size" car dans ce cas les variables post et files sont vides et le visiteur tombera sur une page vide sans explications.
    Tu peux résoudre le problème en envoyant une variable $_GET en même temps que ton formulaire. Si cette variable existe et que $_POST est vide, cela signifie que la configuration "post_max_size" à été dépassée et tu pourras envoyer un message comme quoi le fichier est trop gros (il y a d'autres méthodes pour intercepter ce problème mais celle-ci est à mon avis la plus facile à mettre en place).

    Sinon si tu veux pouvoir uploader des fichiers qui dépassent la config "post_max_size", ou avoir des informations en temps réel durant l'upload, alors il faudra utiliser javascript + php (comme le module déjà cité; y'avait aussi des méthodes en utilisant flash mais aujourd'hui obsolète).

  8. #8
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Citation Envoyé par barale61 Voir le message
    Oui je souhaite supprimer les accents dans ma variable et en PHP car je ne souhaite pas utiliser javascript (par pour le moment toujours) alors si ja fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $lettre = suppAccent("émérite");
    cela me retourne bien emerite mais si je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $lettre = suppAccent($fichier);
    et que le fichier image s'appelle émérite.jpg cela me retourne émérite.jpg.
    Oui, mais on est bien d'accord que c'est la variable $lettre qui contient maintenant emerite.jpg ??????

    Car dans ton code ici

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $lettre = suppAccent($fichier);  //ICI JE SOUHAITE SUPPRIMER LES ACCENTS DU NOM DE FICHIER
     
                if(move_uploaded_file($_FILES['image']['tmp_name'], $dossier . $fichier)) //Si TRUE
                    {
                        echo '<p>Upload effectu&eacute; avec succ&eacute;s !</p><img src='.$dossier.$fichier.'><p>'.$lettre;
    Tu refais appel à $fichier qui lui contient les accents.
    Ton code devrais être ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $lettre = suppAccent($fichier);  //ICI JE SOUHAITE SUPPRIMER LES ACCENTS DU NOM DE FICHIER
     
                if(move_uploaded_file($_FILES['image']['tmp_name'], $dossier . $lettre)) //Si TRUE
                    {
                        echo '<p>Upload effectu&eacute; avec succ&eacute;s !</p><img src='.$dossier.$lettre.'><p>'.$fichier;

  9. #9
    Membre confirmé
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2013
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2013
    Messages : 176
    Par défaut Suppression des accents sur variable
    Merci pour vos réponses. Entre temps, j'ai fait ça et ça marche bien mais, je vais regarder avec attention ce que vous m'avez dit:

    Code : 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
    <?php
    // DEBUT SUPPRESSION DES ACCENTS
    function suppAccent($lettre)
                {
                    $a = array("ä", "â", "à","á","å","æ","ã","Ä","À","Á","Â","Ã","Ä","Å","Æ");
                    $lettre = str_replace($a, "a", $lettre);
                    $b = array("ß");	
                    $lettre = str_replace($b, "b", $lettre);
                    $c = array("ç","Ç");	
                    $lettre = str_replace($c, "c", $lettre);
                    $d = array("Ð","þ");	
                    $lettre = str_replace($d, "d", $lettre);				
                    $e = array("é", "è", "ê", "ë","ð","È","É","Ê","Ë");
                    $lettre = str_replace($e, "e", $lettre);		
                    $i = array("î","ï","ì","í","Ì","Í","Î","Ï");
                    $lettre = str_replace($i, "i", $lettre);
                    $n = array("ñ","Ñ");
                    $lettre = str_replace($n, "n", $lettre);	
                    $o = array("ö","ô","ò","ó","õ","ø","œ","Ò","Ó","Ô","Õ","Ö","Œ","Ø");
                    $lettre = str_replace($o, "o", $lettre);
                    $s = array("š","Š");
                    $lettre = str_replace($s, "s", $lettre);
                    $u = array("ù","ú","ü","û","Ù","Ú","Û","Ü");
                    $lettre = str_replace($u, "u", $lettre);
                    $y = array("ý","ÿ","Ý","Ÿ");
                    $lettre = str_replace($y, "y", $lettre);
                    $z = array("ž","Ž");
                    $lettre = str_replace($z, "z", $lettre);
                    return $lettre;
                }
    // FIN SUPPRESSION DES ACCENTS
     
    if( isset($_FILES['image']) && $_FILES['image']['error'] == 0)
    {
        if( $_FILES['image']['size'] <= 2000000)
        {
        // si l'extension est autoris&eacute;e
     
                $infosfichier = pathinfo($_FILES['image']['name']);
                $extension_upload = $infosfichier['extension'];
                $extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png');
     
                if (in_array($extension_upload, $extensions_autorisees))
                {  
                $dossier = 'uploads/';
                $fichier = basename($_FILES['image']['name']);
    			$lettre = suppAccent($fichier);
    			$separateur = "_";
    			$nb = mt_rand();
     
                if(move_uploaded_file($_FILES['image']['tmp_name'], $dossier . $nb . $separateur . $lettre)) //Si TRUE
                    {
                        echo '<p>Upload effectu&eacute; avec succ&eacute;s !</p><img src='.$dossier.$nb.$separateur.$lettre.'><p>'.$nb.$separateur.$lettre;
                    }
    			else
                    {
                        echo '<p>Echec de l\'upload !</p>';
                    }
                }
                else
    			{
                    echo '<p>Erreur sur extension de fichier</p>';
                }
        }
        else
        {
            echo '<p>Erreur sur taille fichier<p/>';
        }
    }
    else
    {
        echo '<p>Erreur pr&eacute;sence fichier<p/>';
    }
    ?>
    Une chose que j'aimerais (à moins que ce soit dans le php plus haut et là je verrais donc plus tard) c'est comment gérer le type mime ?

  10. #10
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 994
    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 994
    Par défaut
    Attention le eszett (ß) correspond à deux "s" pas à un "b".
    Quant au thorn minuscule (þ) il correspond à "th", donc sa version majuscule (Þ) est "Th" ou "TH".
    Le (ð) est un "eth" minuscule et se remplace par un "d" pas par un "e".
    Le e dans l'a et le e dans l'o se remplacent respectivement par "ae" (comme d'ailleurs le "ø") et "oe".

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 95
    Dernier message: 18/07/2008, 11h17
  2. Suppression des Accents
    Par Tanelorn dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 03/12/2007, 02h01
  3. Suppression des noms sur excel
    Par laurentsen dans le forum Excel
    Réponses: 4
    Dernier message: 07/11/2007, 17h02
  4. Suppression des accents et mise en Majuscules
    Par mlzim dans le forum Contribuez
    Réponses: 4
    Dernier message: 07/11/2007, 13h07
  5. Suppression des styles sur Excel
    Par laurentsen dans le forum Excel
    Réponses: 1
    Dernier message: 05/11/2007, 20h01

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