Problème affichage caractères accentués

Résolu/Fermé
YameFAZE Messages postés 201 Date d'inscription mardi 24 avril 2012 Statut Membre Dernière intervention 14 mars 2021 - 23 janv. 2021 à 20:30
YameFAZE Messages postés 201 Date d'inscription mardi 24 avril 2012 Statut Membre Dernière intervention 14 mars 2021 - 24 janv. 2021 à 17:14
Bonjour,

J'utilise une petite boucle PHP pour récupérer la première lettre de chaque partie d'un prénom composé. Le problème survient lorsque je souhaite afficher le résultat, si l'une de ces lettres est un caractère accentué, elle s'affiche mal. Un "é" va s'afficher avec un "?" dans un losange. Je suppose qu'il y a une manipulation à faire dans la boucle avant l'echo pour encoder ou décoder les caractères accentués.

Quelqu'un peut-il m'aider ?

Ci-dessous ma boucle :
<?php
									/**/
									$string = 'aLEXANDRE-Maurice-théo-édouArd';
									/**/
									$arrayOFstring = explode('-', $string);
									/**/
									$nbr = count($arrayOFstring);
									/**/
									$i_while = 1;
									/**/
									$i_firstChar = 0;
									/**/
									$i_arrayOFstring = 0;
									/**/
									while ($i_while <= $nbr) {
										/**/
										$firstChar[$i_firstChar] = substr($arrayOFstring[$i_arrayOFstring], 0, 1);
										/**/
										echo '<p>'.$firstChar[$i_firstChar].'</p>';
										/**/
										$i_while++;
										/**/
										$i_firstChar++;
										/**/
										$i_arrayOFstring++;
									}
									/**/
									echo implode('-', $arrayOFstring);
								?>


Configuration: Windows / Firefox 72.0
A voir également:

7 réponses

jordane45 Messages postés 38135 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 13 avril 2024 4 646
23 janv. 2021 à 21:01
0
jordane45 Messages postés 38135 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 13 avril 2024 4 646
23 janv. 2021 à 21:08
Ah, et ensuite, il y a plus simple pour boucler qu'un while... il y a le foreach
$string = 'aLEXANDRE-Maurice-théo-édouArd';
$arrayOFstring = explode('-', $string);
$farryFirstChar = array();

foreach($arrayOFstring as $mot){
   $firstChar= substr($mot, 0, 1);
   echo '<br><p>'.$firstChar.'</p>';
   $arrayFirstChar[] =  $firstChar ;
}
echo "<br>" . implode('-', $arrayFirstChar);

0
YameFAZE Messages postés 201 Date d'inscription mardi 24 avril 2012 Statut Membre Dernière intervention 14 mars 2021
23 janv. 2021 à 21:51
Merci pour ta réponse. J'ai lu ton lien et j'ai déjà appliqué tout ce qu'il y est conseillé. Je ne vois donc pas d'où vient le problème. Surtout que le reste de ma page s'affiche parfaitement. Il n'y a QUE cet echo qui pose problème.
0
jordane45 Messages postés 38135 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 13 avril 2024 4 646
23 janv. 2021 à 21:55
Il n'est pas possible, si tu as réellement suivi TOUT ce qui est indiqué dans le lien que je t'ai donné .. que les caractères accentués ne s'affichent pas correctement ...

Fais nous un Screen shot de chaque étape .. à commencer par :
- Format UTF8 de ton fichier
- Encode utf8 déclaré dans l'en-tête de ton fichier php/html
0
YameFAZE Messages postés 201 Date d'inscription mardi 24 avril 2012 Statut Membre Dernière intervention 14 mars 2021
23 janv. 2021 à 22:03
Pour mes fichiers .php je les enregistre bien au format UTF8 avec SublimeText. Et dans mon <head> j'ai bien déclaré la balise <meta charset="utf-8" />



0
jordane45 Messages postés 38135 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 13 avril 2024 4 646
23 janv. 2021 à 22:09
On ne voit pas le head de ta page
Pourrais tu nous partager le code complet de ce fichier ?

( en le collant directement sur le forum et en utilisant les balises de code )
0
YameFAZE Messages postés 201 Date d'inscription mardi 24 avril 2012 Statut Membre Dernière intervention 14 mars 2021
Modifié le 23 janv. 2021 à 22:20
Le fichier est en cours de construction. La partie PHP n'est pas terminée donc c'est normal s'il y a des manques. ;-)

Encore une fois il n'y a que cet echo qui pose problème. Même quand je fais un echo sur $string le "é" s'affiche parfaitement. On dirait que c'est dans la boucle que ça merde. Dans la boucle le caractère doit s'encoder quelque part et du coup lorsque je l'affiche à nouveau ça bug. J'ai vu qu'il existait utf8_encode() mais je ne sais pas si ça règlerait le problème.



<?php
 /* On démarre une session pour sauvegarder les données du formulaire. */
 session_start();
 /* On sauvegarde les différents pattern de validation des champs du formulaire dans des variables. */
 $registration_firstName_pattern = '#[0-9\.,;:\'"\!\?<>\{\}\[\]\(\)/\|\\\_=\+\#£\$&§%@\* ]+#';
 $registration_lastName_pattern = '#[0-9\.,;:\'"\!\?<>\{\}\[\]\(\)/\|\\\_=\+\#£\$&§%@\* ]+#';
 /* Si le bouton a été activé par l'utilisateur,... */
 if (isset($_POST['registration_send'])) {
  /* ...on sauvegarde cette activation dans une variable de session,... */
  $_SESSION['registration_send'] = $_POST['registration_send'];
  /* ...on sauvegarde ensuite les éventuelles données renseignées par l'utilisateur dans des variables de session,... */
  $_SESSION['registration_firstName'] = $_POST['registration_firstName'];
  $_SESSION['registration_lastName'] = $_POST['registration_lastName'];
  /* ...on prépare dans une variable de session un message d'erreur à afficher à l'utilisateur si ce dernier a oublié de remplir un champs obligatoire,... */
  $_SESSION['required_error'] = '
   <p class="error">
    Vous avez oublié de remplir ce champs. Ce champs est obligatoire. Merci de bien vouloir le remplir.
   </p>
  ';
  /* ...on prépare dans une variable de session un message d'erreur à afficher à l'utilisateur si les conditions de remplissage n'ont pas été respectées par ce dernier,... */
  $_SESSION['pattern_error'] = '
   <p class="error">
    Vous avez utilisé un ou plusieurs des caractères interdits ci-dessous en remplissant ce champs. Merci de bien vouloir remplir le champs en respectant les conditions ci-dessous.
   </p>
  ';
  /* ...puis on effectue les différents contrôles sur les champs. */
  /*----------------------*/
  /*-- FIRST NAME FIELD --*/
  /*----------------------*/
  /* Si le champs « Prénom : » n'a pas été rempli par l'utilisateur,... */
  if (empty($_SESSION['registration_firstName'])) {
   /* ...on redirige ce dernier vers le champs. */
   header("Location: #registration_firstName");
   /* Arrêt. */
   exit();
  }
  /* Si le champs « Prénom : » a été rempli par l'utilisateur mais qu'il présente une ou plusieurs erreurs,... */
  if (!empty($_SESSION['registration_firstName']) AND preg_match($registration_firstName_pattern, $_SESSION['registration_firstName'])) {
   /* ...on redirige ce dernier vers le champs. */
   header("Location: #registration_firstName");
   /* Arrêt. */
   exit();
  }
  /*---------------------*/
  /*-- LAST NAME FIELD --*/
  /*---------------------*/
  /* Si le champs « Nom : » n'a pas été rempli par l'utilisateur,... */
  if (empty($_SESSION['registration_lastName'])) {
   /* ...on redirige ce dernier vers le champs. */
   header("Location: #registration_lastName");
   /* Arrêt. */
   exit();
  }
  /* Si le champs « Nom : » a été rempli par l'utilisateur mais qu'il présente une ou plusieurs erreurs,... */
  if (!empty($_SESSION['registration_lastName']) AND preg_match($registration_lastName_pattern, $_SESSION['registration_lastName'])) {
   /* ...on redirige ce dernier vers le champs. */
   header("Location: #registration_lastName");
   /* Arrêt. */
   exit();
  }
 }
?>
<!DOCTYPE html>
<html lang="fr">
 <!--------------->
 <!-- Variables -->
 <!--------------->
 <?php include 'parts/vars.php'; ?>
 <!---------->
 <!-- Head -->
 <!---------->
 <head>
  <meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" href="img/bubble_15x15.ico" />
<link rel="stylesheet" href="css/style.css" />
  <title><?php echo strip_tags($string_companyName).' | '.strip_tags($title_registrationAndLogin); ?></title>
  <meta name="description" content="<?php echo strip_tags($string_companyName).' | '.strip_tags($title_registrationAndLogin); ?>" />
 </head>
 <body>
  <!------------>
  <!-- Header -->
  <!------------>
  <header>
   <h1>
    <?php echo $string_companyName.'<br />'.$title_registrationAndLogin; ?>
   </h1>
   <?php echo $phone.''.$email; ?>
  </header>
  <!--------------------------->
  <!-- Navigation de la page -->
  <!--------------------------->
  <?php include 'parts/nav.php'; ?>
  <div class="background"></div>
  <!-------------------------->
  <!-- Conteneur de la page -->
  <!-------------------------->
  <main id="anchor_main">
   <article id="registrationAndLogin">
    <h2>
     <?php echo $title_registration; ?>
    </h2>
    <p class="hidden">x</p>
    <p></p>
    <form id="registration" name="registration" method="post" action="#">
     <fieldset>
      <legend>
       Informations personnelles
      </legend>
      <!---------------------->
      <!-- FIRST NAME FIELD -->
      <!---------------------->
      <div class="<?php
       /* Si le bouton a été activé par l'utilisateur,... */
       if (isset($_SESSION['registration_send'])) {
        /* ...on effectue les différents contrôles sur le champs « Prénom : ». */
        /* Si le champs n'a pas été rempli par l'utilisateur,... */
        if (empty($_SESSION['registration_firstName'])) {
         /* ...on modifie le CSS du champs en ajoutant une classe. */
         echo 'error';
        }
        /* Si le champs a été rempli par l'utilisateur mais qu'il présente une ou plusieurs erreurs,... */
        if (!empty($_SESSION['registration_firstName']) AND preg_match($registration_firstName_pattern, $_SESSION['registration_firstName'])) {
         /* ...on modifie le CSS du champs en ajoutant une classe. */
         echo 'error';
        }
       }
      ?>">
       <div>
        <label for="registration_firstName">Prénom :</label>
        <input type="text" id="registration_firstName" name="registration_firstName" title="Merci de bien vouloir renseigner votre prénom." minlength="2" maxlength="50" placeholder="Jean" value="<?php
         /* Si le bouton a été activé par l'utilisateur,... */
         if (isset($_SESSION['registration_send'])) {
          /* ...on effectue les différents contrôles sur le champs « Prénom : ». */
          /* Si le champs a été rempli par l'utilisateur,... */
          if (!empty($_SESSION['registration_firstName'])) {
           /* ...on traite les données renseignées par ce dernier. */
           /* ...on ré-affiche dans le champs les données. */
           echo $_SESSION['registration_firstName'];
          }
         }
        ?>" oncopy="return false;" onpaste="return false;">
        <?php
         /* Si le bouton a été activé par l'utilisateur,... */
         if (isset($_SESSION['registration_send'])) {
          /* ...on effectue les différents contrôles sur le champs « Prénom : ». */
          /* Si le champs n'a pas été rempli par l'utilisateur,... */
          if (empty($_SESSION['registration_firstName'])) {
           /* ...on lui affiche le message d'erreur pré-préparé. */
           echo $_SESSION['required_error'];
          }
          /* Si le champs a été rempli par l'utilisateur mais qu'il présente une ou plusieurs erreurs,... */
          if (!empty($_SESSION['registration_firstName']) AND preg_match($registration_firstName_pattern, $_SESSION['registration_firstName'])) {
           /* ...on lui affiche le message d'erreur pré-préparé. */
           echo $_SESSION['pattern_error'];
          }
         }
        ?>
        <p>
         Champs obligatoire. De 2 à 50 caractères. <span class="under">Caractères interdits</span> = « . , ; : ' " ! ? < > { } [ ] ( ) / | \ _ = + # £ $ & § % @ * ». Caractères numériques de 0 à 9. Espaces.
        </p>
        <?php
         /**/
         $string = 'aLEXANDRE-Maurice-théo-édouArd';
         /**/
         echo $string;
         /**/
         $arrayOFstring = explode('-', $string);
         /**/
         $nbr = count($arrayOFstring);
         /**/
         $i_while = 1;
         /**/
         $i_firstChar = 0;
         /**/
         $i_arrayOFstring = 0;
         /**/
         while ($i_while <= $nbr) {
          /**/
          $firstChar[$i_firstChar] = substr($arrayOFstring[$i_arrayOFstring], 0, 1);
          /**/
          echo '<p>'.$firstChar[$i_firstChar].'</p>';
          /**/
          $i_while++;
          /**/
          $i_firstChar++;
          /**/
          $i_arrayOFstring++;
         }
         /**/
         echo implode('-', $arrayOFstring);
        ?>
       </div>
      </div>
      <!--------------------->
      <!-- LAST NAME FIELD -->
      <!--------------------->
      <div class="<?php
       /* Si le bouton a été activé par l'utilisateur,... */
       if (isset($_SESSION['registration_send'])) {
        /* ...on effectue les différents contrôles sur le champs « Nom : ». */
        /* Si le champs n'a pas été rempli par l'utilisateur,... */
        if (empty($_SESSION['registration_lastName'])) {
         /* ...on modifie le CSS du champs en ajoutant une classe. */
         echo 'error';
        }
        /* Si le champs a été rempli par l'utilisateur mais qu'il présente une ou plusieurs erreurs,... */
        if (!empty($_SESSION['registration_lastName']) AND preg_match($registration_lastName_pattern, $_SESSION['registration_lastName'])) {
         /* ...on modifie le CSS du champs en ajoutant une classe. */
         echo 'error';
        }
       }
      ?>">
       <div>
        <label for="registration_lastName">Nom :</label>
        <input type="text" id="registration_lastName" name="registration_lastName" title="Merci de bien vouloir renseigner votre nom." minlength="2" maxlength="50" placeholder="Martin" value="<?php
         /* Si le bouton a été activé par l'utilisateur,... */
         if (isset($_SESSION['registration_send'])) {
          /* ...on effectue les différents contrôles sur le champs « Nom : ». */
          /* Si le champs a été rempli par l'utilisateur,... */
          if (!empty($_SESSION['registration_lastName'])) {
           /* ...on ré-affiche dans le champs les données. */
           echo $_SESSION['registration_lastName'];
          }
         }
        ?>" oncopy="return false;" onpaste="return false;">
        <?php
         /* Si le bouton a été activé par l'utilisateur,... */
         if (isset($_SESSION['registration_send'])) {
          /* ...on effectue les différents contrôles sur le champs « Nom : ». */
          /* Si le champs n'a pas été rempli par l'utilisateur,... */
          if (empty($_SESSION['registration_lastName'])) {
           /* ...on lui affiche le message d'erreur pré-préparé. */
           echo $_SESSION['required_error'];
          }
          /* Si le champs a été rempli par l'utilisateur mais qu'il présente une ou plusieurs erreurs,... */
          if (!empty($_SESSION['registration_lastName']) AND preg_match($registration_lastName_pattern, $_SESSION['registration_lastName'])) {
           /* ...on lui affiche le message d'erreur pré-préparé. */
           echo $_SESSION['pattern_error'];
          }
         }
        ?>
        <p>
         Champs obligatoire. De 2 à 50 caractères. <span class="under">Caractères interdits</span> = « . , ; : ' " ! ? < > { } [ ] ( ) / | \ _ = + # £ $ & § % @ * ». Caractères numériques de 0 à 9. Espaces.
        </p>
       </div>
      </div>
      <!-------------------->
      <!-- BIRTHDAY FIELD -->
      <!-------------------->
      <div>
       <div>
        <label for="registration_birthday">Date de naissance :</label>
        <input type="date" id="registration_birthday" name="registration_birthday" title="Merci de bien vouloir renseigner votre date de naissance." max="<?php echo date('Y-m-d', strtotime('-18 year')); ?>" value="">
        <p>
         Champs obligatoire. Vous devez avoir au moins 18 ans pour pouvoir vous inscrire.
        </p>
       </div>
      </div>
     </fieldset>
     <fieldset>
      <legend>
       Adresse de livraison
      </legend>
      <!-------------------->
      <!-- LOCALITY FIELD -->
      <!-------------------->
      <div>
       <div>
        <label for="registration_locality">Lieu-dit :</label>
        <input type="text" id="registration_locality" name="registration_locality" title="Si nécessaire merci de bien vouloir renseigner votre lieu-dit." minlength="3" maxlength="50" pattern="['\-0-9A-Za-zÀ-ÄÆ-ÏÒ-ÖŒÙ-Üà-äæ-ïò-öœù-ü ]{3,50}" placeholder="quartier Notre-Dame" value="" oncopy="return false;" onpaste="return false;">
        <p>
         Champs facultatif. De 3 à 50 caractères. <span class="under">Caractères autorisés</span> = « ' » (apostrophe simple). « - » (tiret du 6). Caractères numériques de « 0 » à « 9 ». Caractères alphabétiques de « a » à « z ». Minuscules et majuscules. Accents. « ç » (c cédille). Espaces.
        </p>
       </div>
      </div>
      <!------------------------->
      <!-- STREET NUMBER FIELD -->
      <!------------------------->
      <div>
       <div>
        <label for="registration_streetNumber">Numéro de voie :</label>
        <input type="text" id="registration_streetNumber" name="registration_streetNumber" title="Merci de bien vouloir renseigner votre numéro de voie." minlength="1" maxlength="5" pattern="[0-9]{1,5}" placeholder="1" value="" oncopy="return false;" onpaste="return false;">
        <p>
         Champs obligatoire. De 1 à 5 caractères. <span class="under">Caractères autorisés</span> = Caractères numériques de « 0 » à « 9 ».
        </p>
       </div>
      </div>
      <!--------------------------->
      <!-- STREET ADDITION FIELD -->
      <!--------------------------->
      <div>
       <div>
        <label for="registration_streetAddition">Complément de voie :</label>
        <select id="registration_streetAddition" name="registration_streetAddition" title="Merci de bien vouloir sélectionner votre type de voie.">
         <option value=""></option>
         <option value="bis">bis</option>
         <option value="ter">ter</option>
         <option value="quater">quater</option>
        </select>
        <p>
         Champs facultatif.
        </p>
       </div>
      </div>
      <!----------------------->
      <!-- STREET TYPE FIELD -->
      <!----------------------->
      <div>
       <div>
        <label for="registration_streetType">Type de voie :</label>
        <select id="registration_streetType" name="registration_streetType" title="Merci de bien vouloir sélectionner votre type de voie.">
         <option value=""></option>
         <option value="allée">allée</option>
         <option value="rue">rue</option>
         <option value="avenue">avenue</option>
         <option value="boulevard">boulevard</option>
         <option value="place">place</option>
         <option value="esplanade">esplanade</option>
         <option value="impasse">impasse</option>
         <option value="chemin">chemin</option>
         <option value="ancien chemin">ancien chemin</option>
         <option value="route">route</option>
         <option value="ancienne route">ancienne route</option>
        </select>
        <p>
         Champs obligatoire.
        </p>
       </div>
      </div>
      <!----------------------->
      <!-- STREET NAME FIELD -->
      <!----------------------->
      <div>
       <div>
        <label for="registration_streetName">Nom de voie :</label>
        <input type="text" id="registration_streetName" name="registration_streetName" title="Merci de bien vouloir renseigner votre nom de voie." minlength="3" maxlength="50" pattern="['\-0-9A-Za-zÀ-ÄÆ-ÏÒ-ÖŒÙ-Üà-äæ-ïò-öœù-ü ]{3,50}" placeholder="de France" value="" oncopy="return false;" onpaste="return false;">
        <p>
         Champs obligatoire. De 3 à 50 caractères. <span class="under">Caractères autorisés</span> = « ' » (apostrophe simple). « - » (tiret du 6). Caractères numériques de « 0 » à « 9 ». Caractères alphabétiques de « a » à « z ». Minuscules et majuscules. Accents. « ç » (c cédille). Espaces.
        </p>
       </div>
      </div>
      <!-------------------->
      <!-- POSTCODE FIELD -->
      <!-------------------->
      <div>
       <div>
        <label for="registration_postcode">Code postal :</label>
        <input type="text" id="registration_postcode" name="registration_postcode" title="Merci de bien vouloir renseigner votre code postal." minlength="5" maxlength="5" pattern="[0-9]{5}" placeholder="75000" value="" oncopy="return false;" onpaste="return false;">
        <p>
         Champs obligatoire. 5 caractères. <span class="under">Caractères autorisés</span> = Caractères numériques de « 0 » à « 9 ».
        </p>
       </div>
      </div>
      <!---------------->
      <!-- CITY FIELD -->
      <!---------------->
      <div>
       <div>
        <label for="registration_city">Ville :</label>
        <input type="text" id="registration_city" name="registration_city" title="Merci de bien vouloir renseigner votre ville." minlength="3" maxlength="50" pattern="['\-A-Za-zÀ-ÄÆ-ÏÒ-ÖŒÙ-Üà-äæ-ïò-öœù-ü]{3,50}" placeholder="Paris" value="" oncopy="return false;" onpaste="return false;">
        <p>
         Champs obligatoire. De 3 à 50 caractères. <span class="under">Caractères autorisés</span> = « ' » (apostrophe simple). « - » (tiret du 6). Caractères alphabétiques de « a » à « z ». Minuscules et majuscules. Accents. « ç » (c cédille).
        </p>
       </div>
      </div>
      <!------------------->
      <!-- DETAILS FIELD -->
      <!------------------->
      <div>
       <div>
        <label for="registration_details">Précisions éventuelles :</label>
        <textarea id="registration_details" name="registration_details" title="Merci de bien vouloir renseigner les informations qui pourraient aider à la livraison." minlength="3" maxlength="255" pattern="[!\#'\(-\*,-\.0-9:;\?A-Za-zÀ-ÄÆ-ÏÒ-ÖŒÙ-Üà-äæ-ïò-öœù-ü ]{3,255}" placeholder="bâtiment A, escalier B, 7ème étage, porte 321..." oncopy="return false;" onpaste="return false;"></textarea>
        <p>
         Champs facultatif. De 3 à 255 caractères. <span class="under">Caractères autorisés</span> = « # » (dièse). « * » (étoile). « ' » (apostrophe simple). « - » (tiret du 6). Caractères numériques de « 0 » à « 9 ». Caractères alphabétiques de « a » à « z ». Minuscules et majuscules. Accents. « ç » (c cédille). Ponctuations. Espaces.
        </p>
       </div>
      </div>
      <!-------------------->
      <!-- ELEVATOR FIELD -->
      <!-------------------->
      <div>
       <div>
        <label for="registration_elevator">Présence d'un ascenseur :</label>
        <select id="registration_elevator" name="registration_elevator" title="Merci de bien vouloir préciser la présence ou non d\'un ascenseur.">
         <option value=""></option>
         <option value="oui">oui</option>
         <option value="non">non</option>
        </select>
        <p>
         Champs facultatif.
        </p>
       </div>
      </div>
     </fieldset>
     <fieldset>
      <legend>
       Coordonnées de contact
      </legend>
      <!----------------->
      <!-- PHONE FIELD -->
      <!----------------->
      <div>
       <div>
        <label for="registration_phone">Téléphone :</label>
        <input type="text" id="registration_phone" name="registration_phone" title="Merci de bien vouloir renseigner votre numéro de téléphone." minlength="10" maxlength="10" pattern="0[0-9]{9}" placeholder="0612345678" value="" oncopy="return false;" onpaste="return false;">
        <p>
         Champs obligatoire. 10 caractères. <span class="under">Caractères autorisés</span> = Caractères numériques de « 0 » à « 9 ».
        </p>
       </div>
      </div>
      <!----------------->
      <!-- EMAIL FIELD -->
      <!----------------->
      <div>
       <div>
        <label for="registration_email">E-mail :</label>
        <input type="email" id="registration_email" name="registration_email" title="Merci de bien vouloir renseigner votre adresse e-mail." minlength="5" maxlength="50" pattern="[\-\.0-9A-Z\_a-z]{1,50}@[\-\.0-9A-Z\_a-z]{1,50}\.[\-\.0-9A-Z\_a-z]{1,50}" placeholder="jean-martin_75@site.net" value="" oncopy="return false;" onpaste="return false;">
        <p>
         Champs obligatoire. Les deux adresses e-mail doivent être identiques. De 5 à 50 caractères. <span class="under">Caractères autorisés</span> = « - » (tiret du 6). « _ » (tiret du 8). Caractères numériques de « 0 » à « 9 ». Caractères alphabétiques de « a » à « z ». Minuscules et majuscules. « . » (point). « @ » (arobase).
        </p>
       </div>
      </div>
      <!----------------------->
      <!-- CHECK EMAIL FIELD -->
      <!----------------------->
      <div>
       <div>
        <label for="registration_checkEmail">Confirmation de l'e-mail :</label>
        <input type="email" id="registration_checkEmail" name="registration_checkEmail" title="Merci de bien vouloir confirmer votre adresse e-mail." minlength="5" maxlength="50" pattern="[\-\.0-9A-Z\_a-z]{1,50}@[\-\.0-9A-Z\_a-z]{1,50}\.[\-\.0-9A-Z\_a-z]{1,50}" placeholder="jean-martin_75@site.net" value="" oncopy="return false;" onpaste="return false;">
        <p>
         Champs obligatoire. Les deux adresses e-mail doivent être identiques. De 5 à 50 caractères. <span class="under">Caractères autorisés</span> = « - » (tiret du 6). « _ » (tiret du 8). Caractères numériques de « 0 » à « 9 ». Caractères alphabétiques de « a » à « z ». Minuscules et majuscules. « . » (point). « @ » (arobase).
        </p>
       </div>
      </div>
     </fieldset>
     <fieldset>
      <legend>
       Sécurité du compte
      </legend>
      <!-------------------->
      <!-- PASSWORD FIELD -->
      <!-------------------->
      <div>
       <div>
        <label for="registration_password">Mot de passe :</label>
        <input type="password" id="registration_password" name="registration_password" title="Merci de bien vouloir choisir un mot de passe." minlength="5" maxlength="25" pattern="[\#\*\-0-9A-Z\_a-zÀ-ÄÆ-ÏÒ-ÖŒÙ-Üà-äæ-ïò-öœù-ü@]{5,25}" placeholder="Je@n-M@rtin_75" oncopy="return false;" onpaste="return false;">
        <p>
         Champs obligatoire. Les deux mot de passe doivent être identiques. De 5 à 25 caractères. <span class="under">Caractères autorisés</span> = « # » (dièse). « * » (étoile). « - » (tiret du 6). « _ » (tiret du 8). Caractères numériques de « 0 » à « 9 ». Caractères alphabétiques de « a » à « z ». Minuscules et majuscules. Accents. « ç » (c cédille). « @ » (arobase).
        </p>
       </div>
      </div>
      <!-------------------------->
      <!-- CHECK PASSWORD FIELD -->
      <!-------------------------->
      <div>
       <div>
        <label for="registration_checkPassword">Confirmation du mot de passe :</label>
        <input type="password" id="registration_checkPassword" name="registration_checkPassword" title="Merci de bien vouloir confirmer le mot de passe." minlength="5" maxlength="25" pattern="[\#\*\-0-9A-Z\_a-zÀ-ÄÆ-ÏÒ-ÖŒÙ-Üà-äæ-ïò-öœù-ü@]{5,25}" placeholder="Je@n-M@rtin_75" oncopy="return false;" onpaste="return false;">
        <p>
         Champs obligatoire. Les deux mot de passe doivent être identiques. De 5 à 25 caractères. <span class="under">Caractères autorisés</span> = « # » (dièse). « * » (étoile). « - » (tiret du 6). « _ » (tiret du 8). Caractères numériques de « 0 » à « 9 ». Caractères alphabétiques de « a » à « z ». Minuscules et majuscules. Accents. « ç » (c cédille). « @ » (arobase).
        </p>
       </div>
      </div>
     </fieldset>
     <fieldset>
      <legend>
       Validation de l'inscription
      </legend>
      <button type="submit" id="registration_send" name="registration_send" title="Cliquez ici pour valider votre inscription." value="active">Valider</button>
     </fieldset>
    </form>
   </article>
  </main>
  <!------------>
  <!-- Footer -->
  <!------------>
  <?php include 'parts/footer.php'; ?>
 </body>
</html>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
YameFAZE Messages postés 201 Date d'inscription mardi 24 avril 2012 Statut Membre Dernière intervention 14 mars 2021
24 janv. 2021 à 12:03
EDIT

Lorsque je fais un
echo '<p>'.utf8_decode($firstChar[$i_firstChar]).'</p>';
voici ce que j'obtiens sur le caractère "é" :


Et lorsque je fais un
echo '<p>'.utf8_encode($firstChar[$i_firstChar]).'</p>';
voici ce que j'obtiens :


C'est bizarre...

Est-ce que lorsque je fais mon
$firstChar[$i_firstChar] = substr($arrayOFstring[$i_arrayOFstring], 0, 1);
, "é" ne serait-il pas convertit en ISO ? Et donc PHP prendrait en compte le premier caractère de son ISO
é
?
0
jordane45 Messages postés 38135 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 13 avril 2024 4 646
24 janv. 2021 à 12:19
Ah oui, c'est le substr qui pose problème

Il faut le remplacer par mb_substr
$string = 'aLEXANDRE-Maurice-théo-édouArd';
$arrayOFstring = explode('-', $string);
$farryFirstChar = array();

print_r($arrayOFstring);

foreach($arrayOFstring as $mot){
   $firstChar= mb_substr ($mot, 0, 1);
   echo '<br><p>'.$firstChar.'</p>';
   $arrayFirstChar[] =  $firstChar ;
}
echo "<br>" . implode('-', $arrayFirstChar);

0
YameFAZE Messages postés 201 Date d'inscription mardi 24 avril 2012 Statut Membre Dernière intervention 14 mars 2021
24 janv. 2021 à 17:14
Super merci. Effectivement ça marche.
0