accent php question FACILE

vector

Membre actif
16 Novembre 2004
157
1
51
virginie.penalba.free.fr
Bonjour à tous !
ça fait un moment que je cherche une solution mais rien alors je viens vers vous :
Ceci c'est le mail que je reçois du formulaire php de mon site… j'ai réglé le problème des accents écrit par l'internaute mais pas celui de mon texte ! Merci

Les informations suivantes ont été recues le 23.03.2010 à 14:57:53:


----------------------------------------------------------------------------

Nom: éussksiàojxç

E-mail:

----------------------------------------------------------------------------

Sujet: rien

----------------------------------------------------------------------------

Message: oui é!shdl

----------------------------------------------------------------------------

Numéro de téléphone:

----------------------------------------------------------------------------


Voici le code de la page :
Bloc de code:
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<?php
#
$MailTo="[email protected]";

function stripAccents($string){
	return strtr($string,'àáâãäçèéêëìíîïñòóôõöùúûüýÿÀÁÂÃÄÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝ',
'aaaaaceeeeiiiinooooouuuuyyAAAAACEEEEIIIINOOOOOUUUUY');
}
# fonction permettant l'encodage des caract?res accentu?s
function getFormatedText($texte){ 
$texte =utf8_decode($texte); 
$texte =eregi_replace( "\r", "\n", $texte); 
$texte =stripcslashes($texte); 
return $texte; 
} 
# fin de la fonction

$lastname=getFormatedText($_POST['lastname']);
$Subject=getFormatedText($_POST['Subject']);
$Body=getFormatedText($_POST['Body']);


#
# Formating Date   ############################################################
# ("m.d.Y"); pour passer au format europ?en ("d.m.Y");
# Pour rajouter  les heures de d?calage horaire ,ajouter "time()+3600*(2+date("I")));" +2 heure d'?t? R?union
$nowDay=date("d.m.Y");
$nowClock=date("H:i:s",time()+3600*(1+date("I")));
#
# Formating Body content ######################################################
#
$FormContent="
Les informations suivantes ont été recues le $nowDay à $nowClock:\n\n
----------------------------------------------------------------------------\n
Nom: $lastname\n
E-mail: $MailFrom\n
----------------------------------------------------------------------------\n
Sujet: $Subject\n
----------------------------------------------------------------------------\n
Message: $Body\n
----------------------------------------------------------------------------\n
Numéro de t&eacute;l&eacute;phone: $Phone\n
----------------------------------------------------------------------------\n
".urlencode(utf8_encode($FormContent));
#
#
mail($MailTo, "$Subject (de $firstname $lastname)", $FormContent, "From: $MailFrom");
#
#
# Autoresponder   #############################################################
#
#
       $filename = "answer.txt";
       $fd = fopen( $filename, "r" );
       $contents = fread( $fd, filesize( $filename ) );
       fclose( $fd );
       mail( "$MailFrom", "Merci de votre envoi - Naïs.com", "$contents\n\n",
             "From:[email protected]\n" );
#
#
# Flashsignal Variable   ######################################################
#
$signal=1;
echo "signal=$signal";
#
###############################################################################
?>
 
1) Il faut que le fichier php soit encodé en UTF8.

2) Pas la peine de remplacer les caractères accentués par des entités HTML (au contraire).

3) Les fonctions du genre stripAccents ne sont jamais une bonne solution (car on oublie toujours des caractères spéciaux en cours de route) ; en plus, ce n'est pas nécessaire en utilisant un encodage cohérent.