IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

fonction de conversion de caracteres en utf8


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 30
    Points : 17
    Points
    17
    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

  2. #2
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    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

  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    un petit coup de json_decode et ça roule (en attendant le Transliterator)

  4. #4
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Comment ça json_decode ?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 30
    Points : 17
    Points
    17
    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!

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 30
    Points : 17
    Points
    17
    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!

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    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)

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 30
    Points : 17
    Points
    17
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 :

    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!

  10. #10
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    change par : /\\\uc0\\\u(\d+)\s/e

    mais bon la c'est plus des caractère ascii...

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 30
    Points : 17
    Points
    17
    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

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 30
    Points : 17
    Points
    17
    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!

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 30
    Points : 17
    Points
    17
    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フランソワ・ラブレー

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fonction de conversion de nombre en lettres
    Par david_chardonnet dans le forum Langage
    Réponses: 21
    Dernier message: 08/12/2021, 17h51
  2. [TestStand] Fonction de conversion...
    Par capblans dans le forum Autres langages
    Réponses: 4
    Dernier message: 26/04/2005, 08h58
  3. [String] Fonction de recherche de caractères numériques
    Par david71 dans le forum Général Java
    Réponses: 10
    Dernier message: 16/02/2005, 12h05
  4. Réponses: 5
    Dernier message: 12/01/2005, 20h58
  5. Fonction de conversion de COLORREF en hexadécimal?
    Par charliejo dans le forum MFC
    Réponses: 4
    Dernier message: 21/02/2004, 18h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo