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

EDI, CMS, Outils, Scripts et API PHP Discussion :

Convertir une chaîne accentuée


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 23
    Points : 15
    Points
    15
    Par défaut Convertir une chaîne accentuée
    Bonjour à tous,

    Cela va faire plusieurs heures que je galère pour un truc surement très bête...
    Du coup j'ai développé une usine à gaz et je viens vers vous car cela ne fonctionne pas complètement et peut-être qu'il y a un moyen beaucoup plus simple.

    J'essaie de développé une fonction qui prends deux arguments : "un mode" et "une chaîne de caractères".

    Il existe deux mode :
    • MAJ : qui convertie toute la chaîne de caractères en majuscule en conservant toutes les accentuations
    • MIN : qui convertie toute la chaîne de caractère en minuscule sauf le premier caractère qui doit-être en majuscule, en conservant toutes les accentuations


    J'ai réussi à faire ma fonction qui marche dans presque tous les cas, sauf lorsque j'utilise le mode MIN avec une chaîne qui commence avec un caractère minuscule accentué.

    Voici mon code en mode débug (avec plein "echo" et différents tests) :
    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
    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
    <?php
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /////////////////////////////// Fonction permettant de convertir une chaine en MAJ ou en MIN ////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////  
    function convertir($mode, $texte)
    {
    //abcdefghijklmnopqrstuvwxyzàáâãäåæçðèéêëìíîïñòóôõöøœßšþùúûüýÿž --> lettres minuscules accentuées et non accentuées
    //ABCDEFGHIJKLMNOPQRSTUVWXYZÀÁÂÃÄÅÆÇÐÈÉÊËÌÍÎÏÑÒÓÔÕÖ،ߊÞÙÚÛÜÝŸŽ --> lettres majuscules accentuées et non accentuées
     
    	/*Déclaration des variables */
    	$new_chaine = null;
     
    	/* tableau de conversion minuscule en majuscule */
    	$trans1 = array("a" => "A", "b" => "B", "c" => "C", "d" => "D", "e" => "E", "f" => "F", "g" => "G", "h" => "H", "i" => "I", "j" => "J", "k" => "K", "l" => "L", "m" => "M", "n" => "N", "o" => "O", "p" => "P", "q" => "Q", "r" => "R", "s" => "S", "t" => "T", "u" => "U", "v" => "V", "w" => "W", "x" => "X", "y" => "Y", "z" => "Z", "à" => "À", "á" => "Á", "â" => "Â", "ã" => "Ã", "ä" => "Ä", "å" => "Å", "æ" => "Æ", "ç" => "Ç", "ð" => "Ð", "è" => "È", "é" => "É", "ê" => "Ê", "ë" => "Ë", "ì" => "Ì", "í" => "Í", "î" => "Î", "ï" => "Ï", "ñ" => "Ñ", "ò" => "Ò", "ó" => "Ó", "ô" => "Ô", "õ" => "Õ", "ö" => "Ö", "ø" => "Ø", "œ" => "Œ", "ß" => "ß", "š" => "Š", "þ" => "Þ", "ù" => "Ù", "ú" => "Ú", "û" => "Û", "ü" => "Ü", "ý" => "Ý", "ÿ" => "Ÿ", "ž" => "Ž");
     
    	/* tableau de conversion majuscule en minuscule */
    	$trans2 = array("A" => "a", "B" => "b", "C" => "c", "D" => "d", "E" => "e", "F" => "f", "G" => "g", "H" => "h", "I" => "i", "J" => "j", "K" => "k", "L" => "l", "M" => "m", "N" => "n", "O" => "o", "P" => "p", "Q" => "q", "R" => "r", "S" => "s", "T" => "t", "U" => "u", "V" => "v", "W" => "w", "X" => "x", "Y" => "y", "Z" => "z", "À" => "à", "Á" => "á", "Â" => "â", "Ã" => "ã", "Ä" => "ä", "Å" => "å", "Æ" => "æ", "Ç" => "ç", "Ð" => "ð", "È" => "è", "É" => "é", "Ê" => "ê", "Ë" => "ë", "Ì" => "ì", "Í" => "í", "Î" => "î", "Ï" => "ï", "Ñ" => "ñ", "Ò" => "ò", "Ó" => "ó", "Ô" => "ô", "Õ" => "õ", "Ö" => "ö", "Ø" => "ø", "Œ" => "œ", "ß" => "ß", "Š" => "š", "Þ" => "þ", "Ù" => "ù", "Ú" => "ú", "Û" => "û", "Ü" => "ü", "Ý" => "ý", "Ÿ" => "ÿ", "Ž" => "ž");
     
    	echo 'mode='.$mode.'<br>';
     
    	if($mode == 'MAJ')//fonction qui transforme toute la chaîne en majuscule
    		{
    			echo "début boucle MAJ<br>";
    			echo 'chaine : '.$texte.'<br>';
    			echo 'avant1:'.$texte[0].'<br>';
    			$new_chaine = strtr($texte, $trans1);
    			echo 'après:'.$new_chaine[0].'<br>';
    			echo 'dans boucle MAJ : '.$new_chaine.'<br>';
    		}
     
    	if($mode == 'MIN')//fonction qui transforme la chaîne en minuscule et la première lettre en majuscule
    		{
    			echo "début boucle MIN<br>";
    			echo 'chaine : '.$texte.'<br>';
    			echo 'avant1:'.$texte[0].'<br>';
    			$new_chaine = strtr($texte, $trans2);
    			echo 'avant2:'.$new_chaine[0].'<br>';
    			$new_chaine[0] = strtr($new_chaine[0], $trans1);
    			echo 'après:'.$new_chaine[0].'<br>';
    			echo 'dans boucle MIN : '.$new_chaine.'<br>';
    		}
    	echo "<br>";
    	return $new_chaine;
    }
     
    echo "####################################################<br>";
    echo "#################### 1er TEST ##########################<br>";
    echo "####################################################<br>";
    $chaine1 = "ÀÁÂÃÄÅÆÇÐÈÉÊËÌÍÎÏÑÒÓÔÕÖ،ߊÞÙÚÛÜÝŸŽ";
    $majuscule1 = convertir("MAJ",$chaine1);
    $minuscule1 = convertir("MIN",$chaine1);
    echo '1ère chaine : '.$chaine1.'<br>';
    echo 'en majuscule : '.$majuscule1.'<br>';
    echo 'en minuscule : '.$minuscule1.'<br>';
    echo "####################################################<br><br><br><br>";
     
    echo "####################################################<br>";
    echo "################## 2ème TEST ##########################<br>";
    echo "####################################################<br>";
    $chaine2 = "àáâãäåæçðèéêëìíîïñòóôõöøœßšþùúûüýÿž";
    $majuscule2 = convertir("MAJ",$chaine2);
    $minuscule2 = convertir("MIN",$chaine2);
    echo '2ème chaine : '.$chaine2.'<br>';
    echo 'en majuscule : '.$majuscule2.'<br>';
    echo 'en minuscule : '.$minuscule2.'<br>';
    echo "####################################################<br><br><br><br>";
     
    echo "####################################################<br>";
    echo "################## 3ème TEST ##########################<br>";
    echo "####################################################<br>";
    $chaine3 = "minuscule";
    $majuscule3 = convertir("MAJ",$chaine3);
    $minuscule3 = convertir("MIN",$chaine3);
    echo '3ème chaine : '.$chaine3.'<br>';
    echo 'en majuscule : '.$majuscule3.'<br>';
    echo 'en minuscule : '.$minuscule3.'<br>';
    echo "####################################################<br><br><br><br>";
     
    echo "####################################################<br>";
    echo "################## 4ème TEST ##########################<br>";
    echo "####################################################<br>";
    $chaine4 = "Majuscule";
    $majuscule4 = convertir("MAJ",$chaine4);
    $minuscule4 = convertir("MIN",$chaine4);
    echo '4ème chaine : '.$chaine4.'<br>';
    echo 'en majuscule : '.$majuscule4.'<br>';
    echo 'en minuscule : '.$minuscule4.'<br>';
    echo "####################################################<br><br><br><br>";
     
    echo "####################################################<br>";
    echo "################## 5ème TEST ##########################<br>";
    echo "####################################################<br>";
    $chaine5 = "ÊMÂJUSCULé@MïNûSCÜLé";
    $majuscule5 = convertir("MAJ",$chaine5);
    $minuscule5 = convertir("MIN",$chaine5);
    echo '5ème chaine : '.$chaine5.'<br>';
    echo 'en majuscule : '.$majuscule5.'<br>';
    echo 'en minuscule : '.$minuscule5.'<br>';
    echo "####################################################<br><br><br><br>";
     
    echo "####################################################<br>";
    echo "################## 6ème TEST ##########################<br>";
    echo "####################################################<br>";
    $chaine6 = "MÂJUSCULé@MïNûSCÜLé";
    $majuscule6 = convertir("MAJ",$chaine6);
    $minuscule6 = convertir("MIN",$chaine6);
    echo '6ème chaine : '.$chaine6.'<br>';
    echo 'en majuscule : '.$majuscule6.'<br>';
    echo 'en minuscule : '.$minuscule6.'<br>';
    echo "####################################################<br><br><br><br>";
    ?>



    Voici ce qu'affiche à l'écran ce 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
    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
    141
    142
    143
    144
    145
    146
    147
    ####################################################
    #################### 1er TEST ##########################
    ####################################################
    mode=MAJ
    début boucle MAJ
    chaine : ÀÁÂÃÄÅÆÇÐÈÉÊËÌÍÎÏÑÒÓÔÕÖ،ߊÞÙÚÛÜÝŸŽ
    avant1:�
    après:�
    dans boucle MAJ : ÀÁÂÃÄÅÆÇÐÈÉÊËÌÍÎÏÑÒÓÔÕÖ،ߊÞÙÚÛÜÝŸŽ
     
    mode=MIN
    début boucle MIN
    chaine : ÀÁÂÃÄÅÆÇÐÈÉÊËÌÍÎÏÑÒÓÔÕÖ،ߊÞÙÚÛÜÝŸŽ
    avant1:�
    avant2:�
    après:�
    dans boucle MIN : àáâãäåæçðèéêëìíîïñòóôõöøœßšþùúûüýÿž
     
    1ère chaine : ÀÁÂÃÄÅÆÇÐÈÉÊËÌÍÎÏÑÒÓÔÕÖ،ߊÞÙÚÛÜÝŸŽ
    en majuscule : ÀÁÂÃÄÅÆÇÐÈÉÊËÌÍÎÏÑÒÓÔÕÖ،ߊÞÙÚÛÜÝŸŽ
    en minuscule : àáâãäåæçðèéêëìíîïñòóôõöøœßšþùúûüýÿž
    ####################################################
     
     
     
    ####################################################
    ################## 2ème TEST ##########################
    ####################################################
    mode=MAJ
    début boucle MAJ
    chaine : àáâãäåæçðèéêëìíîïñòóôõöøœßšþùúûüýÿž
    avant1:�
    après:�
    dans boucle MAJ : ÀÁÂÃÄÅÆÇÐÈÉÊËÌÍÎÏÑÒÓÔÕÖ،ߊÞÙÚÛÜÝŸŽ
     
    mode=MIN
    début boucle MIN
    chaine : àáâãäåæçðèéêëìíîïñòóôõöøœßšþùúûüýÿž
    avant1:�
    avant2:�
    après:�
    dans boucle MIN : àáâãäåæçðèéêëìíîïñòóôõöøœßšþùúûüýÿž
     
    2ème chaine : àáâãäåæçðèéêëìíîïñòóôõöøœßšþùúûüýÿž
    en majuscule : ÀÁÂÃÄÅÆÇÐÈÉÊËÌÍÎÏÑÒÓÔÕÖ،ߊÞÙÚÛÜÝŸŽ
    en minuscule : àáâãäåæçðèéêëìíîïñòóôõöøœßšþùúûüýÿž
    ####################################################
     
     
     
    ####################################################
    ################## 3ème TEST ##########################
    ####################################################
    mode=MAJ
    début boucle MAJ
    chaine : minuscule
    avant1:m
    après:M
    dans boucle MAJ : MINUSCULE
     
    mode=MIN
    début boucle MIN
    chaine : minuscule
    avant1:m
    avant2:m
    après:M
    dans boucle MIN : Minuscule
     
    3ème chaine : minuscule
    en majuscule : MINUSCULE
    en minuscule : Minuscule
    ####################################################
     
     
     
    ####################################################
    ################## 4ème TEST ##########################
    ####################################################
    mode=MAJ
    début boucle MAJ
    chaine : Majuscule
    avant1:M
    après:M
    dans boucle MAJ : MAJUSCULE
     
    mode=MIN
    début boucle MIN
    chaine : Majuscule
    avant1:M
    avant2:m
    après:M
    dans boucle MIN : Majuscule
     
    4ème chaine : Majuscule
    en majuscule : MAJUSCULE
    en minuscule : Majuscule
    ####################################################
     
     
     
    ####################################################
    ################## 5ème TEST ##########################
    ####################################################
    mode=MAJ
    début boucle MAJ
    chaine : ÊMÂJUSCULé@MïNûSCÜLé
    avant1:�
    après:�
    dans boucle MAJ : ÊMÂJUSCULÉ@MÏNÛSCÜLÉ
     
    mode=MIN
    début boucle MIN
    chaine : ÊMÂJUSCULé@MïNûSCÜLé
    avant1:�
    avant2:�
    après:�
    dans boucle MIN : êmâjusculé@mïnûscülé
     
    5ème chaine : ÊMÂJUSCULé@MïNûSCÜLé
    en majuscule : ÊMÂJUSCULÉ@MÏNÛSCÜLÉ
    en minuscule : êmâjusculé@mïnûscülé
    ####################################################
     
     
     
    ####################################################
    ################## 6ème TEST ##########################
    ####################################################
    mode=MAJ
    début boucle MAJ
    chaine : MÂJUSCULé@MïNûSCÜLé
    avant1:M
    après:M
    dans boucle MAJ : MÂJUSCULÉ@MÏNÛSCÜLÉ
     
    mode=MIN
    début boucle MIN
    chaine : MÂJUSCULé@MïNûSCÜLé
    avant1:M
    avant2:m
    après:M
    dans boucle MIN : Mâjusculé@mïnûscülé
     
    6ème chaine : MÂJUSCULé@MïNûSCÜLé
    en majuscule : MÂJUSCULÉ@MÏNÛSCÜLÉ
    en minuscule : Mâjusculé@mïnûscülé
    ####################################################
    Pour info à l'écran, à la place de "&#65533" j'ai un petit losange avec un ? dedans.

    Merci pour toute l'aide que vous pourrez m'apporter.

    misterg94

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    tiens voilà du plus simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $s = 'àáâãäåæçðèéêëìíîïñòóôõöøœßšþùúûüýÿž';
    echo $s, '<br>', mb_strtoupper($s, 'utf-8'), '<br>';
     
    $s = 'ÀÁÂÃÄÅÆÇÐÈÉÊËÌÍÎÏÑÒÓÔÕÖ،ߊÞÙÚÛÜÝŸŽ';
    echo $s, '<br>', mb_strtolower($s, 'utf-8'), '<br>';
    Après pour que la navigateur puisse afficher correctement ces caractères, tu dois tout envoyer en charset utf-8

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

    on peut aussi ajouter :


  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 23
    Points : 15
    Points
    15
    Par défaut
    Lorsque j'exécute ton bout de code cela fonction et dès que je le mets dans ma fonction cela ne fonctionne plus.
    code exécuté :
    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
    <?php
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /////////////////////////////// Fonction permettant de convertir une chaine en MAJ ou en MIN ////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////  
    function convertir($mode, $texte)
    {
    	/*Déclaration des variables */
    	$new_chaine = null;
     
    	echo 'mode='.$mode.'<br>';
     
    	if($mode == 'MAJ')//fonction qui transforme toute la chaîne en majuscule
    		{
    			echo "début boucle MAJ<br>";
    			echo 'chaine : '.$texte.'<br>';
    			echo 'avant1:'.$texte[0].'<br>';
    			$new_chaine = mb_strtoupper($texte, 'utf-8');
    			echo 'après:'.$new_chaine[0].'<br>';
    			echo 'dans boucle MAJ : '.$new_chaine.'<br>';
    		}
     
    	if($mode == 'MIN')//fonction qui transforme la chaîne en minuscule et la première lettre en majuscule
    		{
    			echo "début boucle MIN<br>";
    			echo 'chaine : '.$texte.'<br>';
    			echo 'avant1:'.$texte[0].'<br>';
    			$new_chaine = mb_strtolower($texte, 'utf-8');
    			echo '1er caractère avant:'.$new_chaine[0].'<br>';
    			$new_chaine[0] = mb_strtoupper($new_chaine[0], 'utf-8');
    			echo '1er caractère après:'.$new_chaine[0].'<br>';
    			echo 'dans boucle MIN : '.$new_chaine.'<br>';
    		}
    	echo "<br>";
    	return $new_chaine;
    }
     
    echo "####################################################<br>";
    echo "#################### 1er TEST ##########################<br>";
    echo "####################################################<br>";
    $chaine1 = "àáâãäåæçðèéêëìíîïñòóôõöøœßšþùúûüýÿž";
    $majuscule1 = convertir("MAJ",$chaine1);
    $minuscule1 = convertir("MIN",$chaine1);
    echo "RESULTAT<br>";
    echo '1ère chaine : '.$chaine1.'<br>';
    echo 'en majuscule : '.$majuscule1.'<br>';
    echo 'en minuscule : '.$minuscule1.'<br>';
    echo "####################################################<br><br><br><br>";
     
    echo "####################################################<br>";
    echo "#################### 2ème TEST #########################<br>";
    echo "####################################################<br>";
    $chaine2 = "ÀÁÂÃÄÅÆÇÐÈÉÊËÌÍÎÏÑÒÓÔÕÖ،ߊÞÙÚÛÜÝŸŽ";
     
    $majuscule2 = convertir("MAJ",$chaine2);
    $minuscule2 = convertir("MIN",$chaine2);
    echo "RESULTAT<br>";
    echo '2ème chaine : '.$chaine2.'<br>';
    echo 'en majuscule : '.$majuscule2.'<br>';
    echo 'en minuscule : '.$minuscule2.'<br>';
    echo "####################################################<br><br><br><br>";
     
    echo "####################################################<br>";
    echo "################## code donné par rawsrc ##################<br>";
    echo "####################################################<br>";
    $s = 'àáâãäåæçðèéêëìíîïñòóôõöøœßšþùúûüýÿž';
    echo $s, '<br>', mb_strtoupper($s, 'utf-8'), '<br><br>';
     
    $s = 'ÀÁÂÃÄÅÆÇÐÈÉÊËÌÍÎÏÑÒÓÔÕÖ،ߊÞÙÚÛÜÝŸŽ';
    echo $s, '<br>', mb_strtolower($s, 'utf-8'), '<br>';
     
     
    ?>
    Résultat du code ci-dessus :
    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
    ####################################################
    #################### 1er TEST ##########################
    ####################################################
    mode=MAJ
    début boucle MAJ
    chaine : àáâãäåæçðèéêëìíîïñòóôõöøœßšþùúûüýÿž
    avant1:�
    après:�
    dans boucle MAJ : ÀÁÂÃÄÅÆÇÐÈÉÊËÌÍÎÏÑÒÓÔÕÖ،ߊÞÙÚÛÜÝŸŽ
     
    mode=MIN
    début boucle MIN
    chaine : àáâãäåæçðèéêëìíîïñòóôõöøœßšþùúûüýÿž
    avant1:�
    1er caractère avant:�
    1er caractère après:?
    dans boucle MIN : ?�áâãäåæçðèéêëìíîïñòóôõöøœßšþùúûüýÿž
     
    RESULTAT
    1ère chaine : àáâãäåæçðèéêëìíîïñòóôõöøœßšþùúûüýÿž
    en majuscule : ÀÁÂÃÄÅÆÇÐÈÉÊËÌÍÎÏÑÒÓÔÕÖ،ߊÞÙÚÛÜÝŸŽ
    en minuscule : ?�áâãäåæçðèéêëìíîïñòóôõöøœßšþùúûüýÿž
    ####################################################
     
     
     
    ####################################################
    #################### 2ème TEST #########################
    ####################################################
    mode=MAJ
    début boucle MAJ
    chaine : ÀÁÂÃÄÅÆÇÐÈÉÊËÌÍÎÏÑÒÓÔÕÖ،ߊÞÙÚÛÜÝŸŽ
    avant1:�
    après:�
    dans boucle MAJ : ÀÁÂÃÄÅÆÇÐÈÉÊËÌÍÎÏÑÒÓÔÕÖ،ߊÞÙÚÛÜÝŸŽ
     
    mode=MIN
    début boucle MIN
    chaine : ÀÁÂÃÄÅÆÇÐÈÉÊËÌÍÎÏÑÒÓÔÕÖ،ߊÞÙÚÛÜÝŸŽ
    avant1:�
    1er caractère avant:�
    1er caractère après:?
    dans boucle MIN : ?�áâãäåæçðèéêëìíîïñòóôõöøœßšþùúûüýÿž
     
    RESULTAT
    2ème chaine : ÀÁÂÃÄÅÆÇÐÈÉÊËÌÍÎÏÑÒÓÔÕÖ،ߊÞÙÚÛÜÝŸŽ
    en majuscule : ÀÁÂÃÄÅÆÇÐÈÉÊËÌÍÎÏÑÒÓÔÕÖ،ߊÞÙÚÛÜÝŸŽ
    en minuscule : ?�áâãäåæçðèéêëìíîïñòóôõöøœßšþùúûüýÿž
    ####################################################
     
     
     
    ####################################################
    ################## code donné par rawsrc ##################
    ####################################################
    àáâãäåæçðèéêëìíîïñòóôõöøœßšþùúûüýÿž
    ÀÁÂÃÄÅÆÇÐÈÉÊËÌÍÎÏÑÒÓÔÕÖ،ߊÞÙÚÛÜÝŸŽ
     
    ÀÁÂÃÄÅÆÇÐÈÉÊËÌÍÎÏÑÒÓÔÕÖ،ߊÞÙÚÛÜÝŸŽ
    àáâãäåæçðèéêëìíîïñòóôõöøœßšþùúûüýÿž

    En attendant vos idées, je vais regarder la fonction mb_convert_case() proposée par jreaux62.


    Merci pour votre aide.

    misterg94

  5. #5
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Bon y a quand même moyen de faire beaucoup plus simple.
    Tu dois placer ce code dans un fichier enregistré au format UTF-8 sans BOM
    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
    <?php
     
    function convertir($mode, $texte)
    {
        if ($mode === 'MAJ')
        {
            return mb_strtoupper($texte, 'utf-8');
        }
     
        if ($mode === 'MIN')
        {
            $char = mb_substr($texte, 0, 1, 'utf-8');
     
            return mb_strtoupper($char).mb_substr($texte, 1);
        }
     
        return '';
    }
     
    $str = "àáâãäåæçðèéêëìíîïñòóôõöøœßšþùúûüýÿž";
    $maj = convertir('MAJ', $str);
    $min = convertir('MIN', $str);
    ?>
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
    </head>
    <body>
        <pre>
            Chaîne : <?=$str ?><br>
            MAJ    : <?=$maj ?><br>
            MIN    : <?=$min ?>
        </pre>
    </body>
    </html>

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 23
    Points : 15
    Points
    15
    Par défaut
    Merci jreaux62 ! Cela fonctionne et ça m'évite l'usine à gaz

    Par contre, pour ma culture, si quelqu'un a une idée d'où peut venir le problème avec ma fonction.

    misterg94

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 23
    Points : 15
    Points
    15
    Par défaut
    @rawsrc


    Super merci beaucoup !

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

Discussions similaires

  1. [script]Convertir une BD .dbf en MySql
    Par ozzmax dans le forum Outils
    Réponses: 5
    Dernier message: 05/05/2006, 16h00
  2. Convertir une chaîne utf8 en iso-8859-1
    Par dredre dans le forum ASP
    Réponses: 1
    Dernier message: 05/05/2006, 00h48
  3. Convertir une chaîne en date
    Par davinout dans le forum Langage
    Réponses: 4
    Dernier message: 25/04/2006, 19h35
  4. [C#] Convertir une chaine accentue => sans accents
    Par alex57 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 07/09/2005, 09h21
  5. Réponses: 3
    Dernier message: 28/09/2003, 10h46

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