Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/04/2011, 10h13   #1
Invité de passage
 
Inscription : juin 2008
Messages : 30
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 30
Points : 4
Points : 4
Par défaut fonction de conversion de caracteres en utf8

Bonjour!
je bosse sur un projet d'import et d'exports de sous-titres vidéos, dans le quel j'ai été emmené a créer à partir de fichiers xml existants les fichiers rtf correspondants!
Maintenant je dois réaliser la fonction inverse c'est à dire générer des fichiers XML à partir de mes fichiers rtf !voila pour ce qui est du contexte!
Mon problème c'est que qu' avec des les lignes de fichiers rtf que je récupère en faisant un fgets() de mon fichier je reçois les lignes avec les tag rtf! je veux don savoir si il existe une fonction qui me permette d'afficher une ligne contenant les tags rtf en claire!
ou plus simplement quelqun connait il un moyen d'afficher en clair la ligne codée en rtf qui suit :
-\uc0\u160 Bonjour.\uc0\u160 Comment\uc0\u160 \uc0\u231 a\uc0\u160 va\uc0\u160 ?Boboifb\uc0\u244 n^kn\uc0\u168 KNVKNNLLjjllllllllaqpljiojfzoi
renkev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2011, 13h04   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
Mon ami google m'a fourni une solution à ton problème: http://www.webcheatsheet.com/php/rea...t_from_rtf.php

Ah ce google, on peut toujours compter sur lui
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2011, 13h05   #3
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
un petit coup de json_decode et ça roule (en attendant le Transliterator)
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2011, 13h11   #4
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
Comment ça json_decode ?
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2011, 13h39   #5
Invité de passage
 
Inscription : juin 2008
Messages : 30
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 30
Points : 4
Points : 4
Par défaut merci!

mer6!
mais mon véritable souscis n'est pas de pouvoir différencier les tags du text clair; le truc c'est que je veux savoir à quels caracteres \uc0\u160 \uc0 je sais qu'il sert en quelque sorte de compteur quon réinitialise! mais \u160 correspond à un caractere spécial! mais je ne sais le quel si quelqun pouvait me donner un lien ou on en parle!(je cherche aussi de mon coté sur google).
thanks a lot!
renkev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2011, 13h48   #6
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
Citation:
Envoyé par Benjamin Delespierre Voir le message
Comment ça json_decode ?
ouai non visiblement il aime pas c'est pas dans bon encdoage utf8, puisque json encode lui les caractère utf8 de cette facon :

héhé -> h\u00e9h\u00e9


EDIT : un coup de PCRE et c'est bon tu me diras :

Code :
1
2
3
4
5
$str = '-\uc0\u160 Bonjour.\uc0\u160 Comment\uc0\u160 \uc0\u231 a\uc0\u160 va\uc0\u160 ?Boboifb\uc0\u244 n^kn\uc0\u168 KNVKNNLLjjllllllllaqpljiojfzoi';
 
$dec = preg_replace('/\\\uc0\\\u([a-z0-9]{1,3})\s/e', 'chr(\'$1\')', $str);
echo utf8_encode($dec); //echo $dec;
//- Bonjour. Comment ça va ?Boboifbôn^kn¨KNVKNNLLjjllllllllaqpljiojfzoi
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 12/04/2011, 14h28   #7
Invité de passage
 
Inscription : juin 2008
Messages : 30
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 30
Points : 4
Points : 4
Par défaut respect!

thanks ça marche impeccable!
t'es vraiment fortish!
mais stp tu peux m'expliquer dans le deuxième paramètre de preg replace quand qu fais chr($1): a quoi fait référence $1
n'hésite pas à m'expliquer toute l'instruction preg_reeplace surtout les deux premiers paramètres (l'expression à rechercher "'/\\\uc0\\\u([a-z0-9](jusque là ça va mais la suite...){1,3})\s/e'" et l''expression chr($1) par la quelle tu remplaces!
je suis un stagiaire ce projet me permet de faire mes dents en php si tu peux m'aider à devenir presque aussi fort que toi ça serait tres cool!
renkev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2011, 15h11   #8
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
dans l'expression on va prendre juste le 160 dans "\uc0\u160 "
on lui donne le groupe 1, ensuite l'option e permet de faire un eval, ducoup on fait chr(160)
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2011, 16h12   #9
Invité de passage
 
Inscription : juin 2008
Messages : 30
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 30
Points : 4
Points : 4
Par défaut conversion utf8

stealth35

j'ai toujours un problème j'essaye de l'appliquer à d'autres lignes de mon fichier mais ça ne marche pas je te montre un exemple :

Code php :
1
2
3
4
$str1='Ligne\uc0\u160 en\uc0\u160 jaune.Bonjour\uc0\u12501 \uc0\u12521 \uc0\u12531 \uc0\u12477 \uc0\u12527 \uc0\u12539 \uc0\u12521 \uc0\u12502 \uc0\u12524 \uc0\u12540 \uc0\u12398';
 
$dec = preg_replace('/\\\uc0\\\u([a-z0-9]{1,3})\s/e', 'chr(\'$1\')', $str1);
echo utf8_encode($dec);

et il m'affiche toujours ça :

Citation:
Ligne en jaune.Bonjour\uc0\u12501 \uc0\u12521 \uc0\u12531 \uc0\u12477 \uc0\u12527 \uc0\u12539 \uc0\u12521 \uc0\u12502 \uc0\u12524 \uc0\u12540 \uc0\u12398
I need some help!
renkev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2011, 16h17   #10
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
change par : /\\\uc0\\\u(\d+)\s/e

mais bon la c'est plus des caractère ascii...
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2011, 16h27   #11
Invité de passage
 
Inscription : juin 2008
Messages : 30
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 30
Points : 4
Points : 4
Par défaut toujours pas

u as raison ce ne sont pas des caracteres ascii c'est des caracteres japonais le resultat que j'attends c'est ça :

Ligne*en*jaune.Bonjourフランソワ・ラブレーの

et ce que j'obtiens avec ta derniere suggestion c'est :

Ligne en jaune.BonjourÕéó½ïûéÖìü\uc0\u12398
renkev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2011, 16h33   #12
Invité de passage
 
Inscription : juin 2008
Messages : 30
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 30
Points : 4
Points : 4
Par défaut afficher en clair le caractere correspondant à un code unicode!

Je suis blocqué dans mon projet pour le stage j'ai absolument besoin de savoir qu'elle fonction utilisée et commrent l'utiliser pour afficher le caractere correspondant au code unicode : u12501 c'est un caractere jecrois japonais!

ce caractere n'est pas un ascii alors je ne crois pas que la fonction chr() puisse etre utilisée!
merci f'avance!
renkev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/04/2011, 12h13   #13
Invité de passage
 
Inscription : juin 2008
Messages : 30
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 30
Points : 4
Points : 4
Par défaut solution

Finalement j'ai trouvé la réponse chr() ne prennant en chargeles caracteres ascii on crée une petite fonction qui sera l'extension de chr que nous appellerons uchr()
dont le code est le le suivant

function uchr ($codes) {
if (is_scalar($codes)) $codes= func_get_args();
$str= '';
foreach ($codes as $code) $str.= html_entity_decode('&#'.$code.';',ENT_NOQUOTES,'UTF-8');
return $str;
}

et apres dans notre example que je vous avais donné pour les caracteres japonais ça peut procéder ainsi:
$str1='Ligne\uc0\u160 en\uc0\u160 jaune.Bonjour\uc0\u12501 \uc0\u12521 \uc0\u12531 \uc0\u12477 \uc0\u12527 \uc0\u12539 \uc0\u12521 \uc0\u12502 \uc0\u12524 \uc0\u12540 ';

$dec = preg_replace('/\\\uc0\\\u([a-z0-9]{1,5})\s/e', 'uchr(\'$1\')', $str1);
et voila apres on peut aprécier le résultat avec echo $dec; // ça devrait donner un truc du genre :
Ligne en jaune.Bonjourフランソワ・ラブレー
renkev est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h46.


 
 
 
 
Partenaires

Hébergement Web