Accueil de Gladir.com Notes légal de Gladir.com Flux RSS des nouvelles du site Gladir.com - PHP - Lecture d'un fichier .VNT (vNote de cellulaire) Section du logiciel DOS «MonsterBook» Inventaire de la bibliothèque de Gladir.com Entrée administrateur

De plus en plus, de nouvelle technologie pour les cellulaires font leurs apparitions. Il ne sont pas difficile à lire en soit, puisqu'ils sont souvent sauvegarder en texte, comme le format .VNT pour le vNote de cellulaire (Galaxy Tab, AndroidOS,...), toutefois, ceux-ci sont malheureusement encodées. Prenons pour acquis que le fichier «message.vnt» est le contenu :

BEGIN:VNOTE
VERSION:1.1
BODY;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=0D=0A=43=69=6E=65=0D=0A=50=72=65=6D=69=65=72=65=20=66=6F=69=73=20=65=
=6E=20=67=6C=61=64=69=72=2E=63=6F=6D=20
DCREATED:20110316T125358
LAST-MODIFIED:20110316T125358
END:VNOTE

Pour lire le fichier «message.vnt» et afficher en claire le message y étant renfermé, il suffit d'écrire les instructions suivante :

  1. <?php
  2. if($fh = fopen("message.vnt", 'r')) {
  3.     $I = 1;
  4.     $CharSet = "";
  5.     $Section = "";
  6.     $Body = false;
  7.     $ExtractChar = false;
  8.     while($CurrLine = fgets($fh)) {
  9.         $J = 0;
  10.         $Word = ExtractWord($CurrLine,$J);
  11.         if("BODY" == $Word) {
  12.             if(";" == substr($CurrLine,$J,1)) {
  13.                 $J++;
  14.                 $Body = true;
  15.                 $ReChecked = true;
  16.                 while($ReChecked) {
  17.                     $Word = ExtractWord($CurrLine,$J);
  18.                     switch($Word) {
  19.                         case "CHARSET":
  20.                             if("=" == substr($CurrLine,$J,1)) {
  21.                                 $J++;
  22.                                 $CharSet = "";
  23.                                 while(";" != substr($CurrLine,$J,1)) {
  24.                                     $CharSet .= substr($CurrLine,$J,1);
  25.                                     $J++;
  26.                                     if($J > strlen($CurrLine)) break;
  27.                                 }
  28.                                 if(";" == substr($CurrLine,$J,1)) $J++;
  29.                             }
  30.                             break;
  31.                         case "ENCODING":
  32.                             if("=" == substr($CurrLine,$J,1)) {
  33.                                 $J++;
  34.                                 $Word = ExtractWord($CurrLine,$J);
  35.                                 if("QUOTED-PRINTABLE" == $Word) {
  36.                                     if(":" == substr($CurrLine,$J,1)) {
  37.                                         $ReChecked = false;
  38.                                         $ExtractChar = true;
  39.                                         $J++;
  40.                                     }
  41.                                 }
  42.                             }
  43.                             break;
  44.                         default:
  45.                             $ReChecked = false;
  46.                             break;
  47.                     }
  48.                 }
  49.             }
  50.         }
  51.         if($ExtractChar) {
  52.             while("=" == substr($CurrLine,$J,1)) {
  53.                 $J++;
  54.                 $String = ExtractHex($CurrLine,$J);
  55.                 if($String != "") {
  56.                     $Value = hexdec($String);
  57.                     switch($Value) {
  58.                         case 10:break;
  59.                         case 13:echo "<br />";break;
  60.                         default:
  61.                             echo chr($Value);
  62.                             break;
  63.                     }
  64.                 }
  65.                 if($J > strlen($CurrLine)) break;
  66.             }
  67.         }
  68.       $I++;
  69.     }
  70.     fclose($fh);
  71. }
  72.  
  73. function ExtractHex($CurrLine,& $J) {
  74.     $Word = "";
  75.     while(((strtoupper(substr($CurrLine,$J,1)) >= "A") && (strtoupper(substr($CurrLine,$J,1)) <= "F"))||((substr($CurrLine,$J,1) >= "0") && (substr($CurrLine,$J,1) <= "9"))) {
  76.         $Word .= substr($CurrLine,$J,1);
  77.         $J++;
  78.         if($J > strlen($CurrLine)) break;
  79.     }
  80.     return $Word;
  81. }
  82.  
  83. function ExtractWord($CurrLine,& $J) {
  84.     $Word = "";
  85.     while(((strtoupper(substr($CurrLine,$J,1)) >= "A") && (strtoupper(substr($CurrLine,$J,1)) <= "Z"))||(substr($CurrLine,$J,1) == "-")) {
  86.         $Word .= substr($CurrLine,$J,1);
  87.         $J++;
  88.         if($J > strlen($CurrLine)) break;
  89.     }
  90.     return $Word;
  91. }
  92. ?>

on obtiendra le résultat suivant :


Cine
Premiere fois en gladir.com


Dernière mise à jour: Jeudi, le 17 mars 2011