begin process at 2012 05 30 17:14:39
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Général

 > 

Parser une chaine UTF8 en php


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Parser une chaine UTF8 en php

dimanche 16 mai 2010 à 17:30:03 | Parser une chaine UTF8 en php

SuperChouquette

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 84px. Mais cela marche mal avec les caractères utf8 codés sur plusieurs bits.. J'ai mis mon code en dessous, pourriez vous m'aider ?

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.


Code PHP :
<?php
$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['&#8800;'] = 6;
$table['&#8804;'] = 5;
$table['&#8805;'] = 5;
$table['&#8594;'] = 5;

$table['&#945;'] = 5;
$table['&#947;'] = 5;
$table['&#956;'] = 5;
$table['&#960;'] = 6;
$table['&#961;'] = 5;
$table['&#963;'] = 5;
$table['&#964;'] = 5;
$table['&#934;'] = 6;

$table['&#916;'] = 6;
$table['&#931;'] = 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  &#945;&#946;&#947;&#948;&#949;&#952;&#955;&#956;&#960;&#961;&#963;&#964;&#934;&#967;&#8594;&#8801;&#8804;&#8805;&#8800;³²&#8730;"; 
$textedebut = str_replace("\r\n","\n",$textedebut);
$tailleLigne = 0;
$texte = "";
$tCaract = 0;

for($z=0; $z<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;
?>
dimanche 16 mai 2010 à 17:32:06 | Re : Parser une chaine UTF8 en php

SuperChouquette

certains caractères ne semblent pas vouloir passer sur le forum non plus ^^ : il n'y a pas de &#952 dans le texte que j'ai mis
mardi 18 mai 2010 à 20:20:49 | Re : Parser une chaine UTF8 en php

SuperChouquette

problème résolu avec mb_substr($textedebut,$z,1),
et mb_strlen($textedebut);


Cette discussion est classée dans : code, php, chaine, utf8, parser


Répondre à ce message

Sujets en rapport avec ce message

preg_replace pour chaine de code php [ par JoJo738 ] PHP-Barcode 128 [ par freednk ] Bonjour.Je cherche une solution pour pouvoir afficher plusieurs etiquettes sur une page prete pour l'impression avec les information ( par ex: 1710 au Transformation chaine de caractère. [ par fritz931 ] Bonjour tout le monde, J'ai un soucis pour transformer une chaine de caractère qui me servira à alimenter Highcharts. En gros je récupère mon array so moteur de recherche en php [ par aminagu ] bonjours , j essey de faire un moteur de recherche en php , le systeme me donne le message d erreur suivant : /* LIKE '%inpt%'SELECT * FROM `table-m Modifier une variable php sans passer par un fomulaire [ par mailliam ] Tcho à tous! Je veux afficher une grille faite avec 100 images (10x10). J'aimerais que quand je clique sur la 1ère image ça envoie une variable php a PHP Array, impossible de lire le contenu [ par mrassaa ] Salut, Je bosse avec Zend Framework pour pouvoir prendre des données de google spreadsheet (j'y suis obligé, pas de mysql possible). Bref, le problè problem de liste deroulante [ par beloufa26 ] salut j'ai un problem avec ma liste deroulante quand je enregistrer les valeurs du formulaire tous marche bien sauf le problem si par exemple je ch


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,201 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales