Bonjour,
je ne parvient pas à "parser" une chaine en utf8.
Chaque caractère à une largeur en pixel définie dans une table, et mon système passe une ligne tous les 94px. Mais cela marche mal avec certains caractères.. J'ai mis mon code en dessous, pourriez vous m'aider ?
et voici le résultat de mon code : http://chouquette.fr/postForum6895364/generer.php
certains caractères deviennent des "�"
Merci d'avance !
Pierre.
ps: j'ai besoin des caractères spéciaux (quelques lettre grecs et symboles mathématiques) donc je ne souhaite pas les supprimer.
<?php header( 'content-type: text/html; charset=utf-8' ); $table = array(); // tous les caracteres font 4 pixel éxéptés ceux-ci : $table['à'] = 5; $table['f'] = 3; $table['i'] = 2; $table['l'] = 3; $table['m'] = 6; $table['s'] = 3; $table['t'] = 3; $table['û'] = 5; $table['w'] = 6; $table['z'] = 5; $table['µ'] = 5; $table['°'] = 5; $table['!'] = 2; $table['#'] = 6; $table['$'] = 6; $table['&'] = 5; $table['('] = 3; $table[')'] = 3; $table[','] = 3; $table['.'] = 2; $table['\''] = 2; $table['-'] = 4; $table[';'] = 3; $table['@'] = 6; $table['['] = 3; $table[']'] = 3; $table['|'] = 2; $table[' '] = 1; $table['*'] = 6; $table['≠'] = 6; $table['≤'] = 5; $table['≥'] = 5; $table['→'] = 5; $table['α'] = 5; $table['γ'] = 5; $table['μ'] = 5; $table['π'] = 6; $table['ρ'] = 5; $table['σ'] = 5; $table['τ'] = 5; $table['Φ'] = 6; $table['Δ'] = 6; $table['Σ'] = 5; // exemple de texte qui ne marche pas car de nombreux caracteres // sont codés sur plusieurs bits en UTF8 $textedebut = "Iñtërnâtiônàlizætiøn αβγδεθλμπρστΦχ→≡≤≥≠³²√"; $textedebut = str_replace("\r\n","\n",$textedebut); $tailleLigne = 0; $texte = ""; $tCaract = 0; for($z=0; $z<mb_strlen($textedebut); $z++) { if($textedebut[$z] == "\n") { $tailleLigne = 0; } else { $tCaract = 4; if(array_key_exists($textedebut[$z], $table)){ $tCaract = $table[$textedebut[$z]]; } $tailleLigne += $tCaract; if ($tailleLigne > 93) { $texte.= "\n"; $tailleLigne = $tCaract; } } $texte .= $textedebut[$z]; } echo $texte; ?>