@Aorgerit,Bonjour.
<form action='....' method='post' target='_self' enctype='multipart/form-data'>FORMULAIRE</form>
Je me suis fait avoir il y a peu avec un simple textarea dans le formulaire, ou tout simplement une image transmise au serveur.
Si cela peut t'aider.
Code : Tout sélectionner
<form name="xxxxxxxxxxxx" action="xxxxxxxxxxxxx.php" method="post">Code : Tout sélectionner
$texte = strtr($texte,
'àáâãäåçèéêëìíîïñòóôõöùúûüýÿÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝ',
'aaaaaaceeeeiiiinooooouuuuyyAAAAAACEEEEIIIINOOOOOUUUUY');Code : Tout sélectionner
echo
\Transliterator::create('NFD; [:Nonspacing Mark:] Remove; NFC')
->transliterate('Héhé, ça marche !')
;
// Hehe, ca marche !Code : Tout sélectionner
$texte = Transliterator::create('NFD; [:Nonspacing Mark:] Remove; NFC')
->transliterate($texte);Code : Tout sélectionner
$enc = "UTF-8";
// On retire les accents de la chaine et du terme recherché
$transliterator = Transliterator::create('NFD; [:Nonspacing Mark:] Remove; NFC;');
$sclean = mb_strtolower($transliterator->transliterate($string), $enc);
$search = mb_strtolower($transliterator->transliterate($search), $enc);Code : Tout sélectionner
$texte= preg_replace('/([^.a-z0-9-]+)/i', '', $texte);jamais remarqué cela. il faudrait vérifier que l'encodage de la page du formulaire est bien le même que le script qui traite le formulaire. si des données sont copier/coller dans le formulaire, que l'encodage de ces données n'est pas la cause du problème.
Comme beaucoup de caractères accentués arrivent modifiés d'unCode : Tout sélectionner
<form name="xxxxxxxxxxxx" action="xxxxxxxxxxxxx.php" method="post">
Le formulaire est traité dans la même page, et je copie en dur dans le code le même caractère de mon clavier que je tape ensuite dans la boite texte. Là je suis vaincu, ça dépasse mes connaissances, j'avais cru trouvé la solution avec de nouveaux tests mais ça donne des résultats bizarres : les réponses sont différentes selon le caractère, exemple :jamais remarqué cela. il faudrait vérifier que l'encodage de la page du formulaire est bien le même que le script qui traite le formulaire. si des données sont copier/coller dans le formulaire, que l'encodage de ces données n'est pas la cause du problème.
Code : Tout sélectionner
<?php
declare(encoding='UTF-8');
# Ici on renseigne un caractère accentué ou diacritique en dur
$caractere_en_dur = "ç";
echo '$caractere_en_dur :';
/*$str = utf8_encode($str);*/
for ( $pos=0; $pos < strlen($caractere_en_dur); $pos ++ )
{
$byte = substr($caractere_en_dur, $pos);
echo '<br>Octet <b>' . $pos . '</b> de $caractere_en_dur a comme valeur ' . ord($byte) . PHP_EOL;
}
if (empty($caractere_formulaire))
{$caractere_formulaire='';}
?>
<!-- ********************************************************************** -->
<!-- ********* Formulaire teste valeur de varialble après post ************* -->
<!-- Affichage de la chaine envoyée par le formulaire -->
<br><br>
<b style="font-size: 50px"><?php echo $_POST["caractere_formulaire"];?></b>
<br><br>
<b>reçue du formulaire tel quel :</b>
<?php
/* ******************************************************************* */
/* Affichage du code grâce à declare(encoding='UTF-8') ligne 2 */
$caractere_formulaire=$_POST["caractere_formulaire"];
for ( $pos=0; $pos < strlen($caractere_formulaire); $pos ++ )
{
$byte = substr($caractere_formulaire, $pos);
echo '<br>Octet <b>' . $pos . '</b> de $caractere_formulaire a comme valeur ' . ord($byte) . PHP_EOL;
}
?>
<br><br>
<b>reçue du formulaire traité utf8_decode() :</b>
<?php
$caractere_formulaire=utf8_decode($caractere_formulaire);
for ( $pos=0; $pos < strlen($caractere_formulaire); $pos ++ )
{
$byte = substr($caractere_formulaire, $pos);
echo '<br>Octet <b>' . $pos . '</b> de $caractere_formulaire a comme valeur ' . ord($byte) . PHP_EOL;
}
?>
<br><br>
<b style="font-size: 22px">Formulaire test caractère accentué ou diacritique</b>
<form action="test_caracteres_accentues.php" method="post">
<textarea name="caractere_formulaire" cols=20 rows=1></textarea>
<br>
<input type="submit" class="bouton" name="action" value="Tester">
</form>