Tester l'encodage des caractères

Tester l'encodage des caractères - PHP - Programmation

Marsh Posté le 01-06-2010 à 09:52:40    

Bonjour à tous,
 
Je suis en train de travailler à la récupération d'email via les fonctions IMAP de PHP. La majorité des messages reçus sont au format ISO. J'ai donc écrit une fonction "décodage" pour les traiter ensuite en utf8.
 
Le problème c'est que certains de ces mails sont au format utf8 au départ et je leur applique aussi le traitement pour les chaines iso alors qu'il ne faudrait pas...
 
Y a t'il un moyen de tester quel est l'encodage du mail (utf-8 ou iso) avant de lui appliquer une fonction de décodage ?  
 

Code :
  1. <?php
  2. $message = str_replace($search, '<br/>', imap_qprint(imap_fetchbody($mbox, $i, 1))); // On remplace les \n par des <br />  
  3.  $message = str_replace('<br/><br/>', '<br/>', $message);
  4. ?>

Reply

Marsh Posté le 01-06-2010 à 09:52:40   

Reply

Marsh Posté le 01-06-2010 à 09:57:55    

chope le MIME du mail et fait un iconv

 

sinon pour ton str_replace c'est nl2br


Message édité par stealth35 le 01-06-2010 à 09:58:40
Reply

Marsh Posté le 01-06-2010 à 10:36:36    

J'arrive bien à retrouver le mime du message mais j'arrive pas à le traiter parce que je connais pas l'encodage du message... meme avec la doc du manuel php
 
$test=imap_fetchstructure($mbox, $i);

Reply

Marsh Posté le 01-06-2010 à 10:41:24    

avec imap_mime_header_decode, sinon t'as d'autres pistes par ici avec  imap_utf8


Message édité par stealth35 le 01-06-2010 à 10:43:32
Reply

Marsh Posté le 01-06-2010 à 10:46:32    

Ok, donc sa c'est bon mais je n'ai toujours pas l'encodage utilisé dans le message écrit clairement...
 
Quand je print_r ma variable, j'ai toujours ce tableau qui s'affiche :
Array ( [0] => stdClass Object ( [charset] => default [text] => Object ) )  
 
         $test=imap_fetchstructure($mbox, $i);  
  $elements = imap_mime_header_decode($test);
  print_r($elements);
 
donc je vois pas quel charset utiliser avec iconv

Reply

Marsh Posté le 01-06-2010 à 10:53:28    

utilises que imap_utf8 dans ce cas la

Reply

Marsh Posté le 01-06-2010 à 11:07:09    

Mais mon problème n'est pas exactement celui la...
 
Je voudrais récupérer l'info :
 
Mon message est encodé en ISO ou en utf8 et appliquer ou non cette fonction si le message est en ISO :
 
$message = nl2br(imap_qprint(imap_fetchbody($mbox, $i, 1)));

Reply

Marsh Posté le 01-06-2010 à 11:22:22    

pourquoi faire cette fonction uniquement en ISO ?

Reply

Marsh Posté le 01-06-2010 à 11:29:13    

En faite, j'ai besoin des infos en utf8 donc quand le mail est déja encoder en utf8 je n'ai rien à faire à par a enregistré mes messages.
 
Par contre en iso je dois d'abord convertir en UTF8 puis ensuite enregistré

Reply

Marsh Posté le 01-06-2010 à 11:46:20    

donc juste imap_utf8, te servira dans n'importe quelle cas

Reply

Marsh Posté le 01-06-2010 à 11:46:20   

Reply

Marsh Posté le 01-06-2010 à 11:50:07    

ba c'est je que j'avais tester à la base mais il me restais des bug genre
 
Bonjour Am=E9lie...

Reply

Marsh Posté le 01-06-2010 à 13:44:35    

et en comme ca

 

utf8_encode(imap_qprint($str))

 

de tout facon c'est par rapport au type de message t'as les correspondances ici :

 

http://www.php.net/manual/fr/funct [...] .php#56230
les codes sont dans les constantes


Message édité par stealth35 le 01-06-2010 à 13:47:06
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed