Section courante

A propos

Section administrative du site

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

Voir également

Articles - Vérificateur de compatibilité de navigateur

Dernière mise à jour : Samedi, le 4 mai 2013