Utiliser les fonctions PHP en Javascript !

On 7 mars 2010 by NkL4

 

 

 

Drôle d’idée mais pas si tordue que ça !

 

En effet, cela ne vous est il jamais arrivé de vous demander pourquoi telle fonction PHP tellement pratique, n’existe pas en JS ?
Un exemple concret est qu’en PHP, les manipulations de date sont extrêmement simples, en JS c’est la croix et la bannière.

 

Un peu de code PHP:

 

  1. <?php
  2. echo date("F j, Y, g:i a"); // March 10, 2001, 5:16 pm
  3. ?>

 

Pour faire la même chose en JS:

 

  1. function date(format, timestamp) {
  2.     var that = this,
  3.         jsdate, f, formatChr = /\\?([a-z])/gi, formatChrCb,
  4.           _pad = function (n, c) {
  5.             if ((n = n + "").length < c) {
  6.                 return new Array((++c) – n.length).join("0") + n;
  7.             } else {
  8.                 return n;
  9.             }
  10.         },
  11.         txt_words = ["Sun", "Mon", "Tues", "Wednes", "Thurs", "Fri", "Satur",
  12.         "January", "February", "March", "April", "May", "June", "July",
  13.         "August", "September", "October", "November", "December"],
  14.         txt_ordin = {
  15.             1: "st",
  16.             2: "nd",
  17.             3: "rd",
  18.             21: "st",
  19.             22: "nd",
  20.             23: "rd",
  21.             31: "st"
  22.         };
  23.     formatChrCb = function (t, s) {
  24.         return f[t] ? f[t]() : s;
  25.     };
  26.     f = {
  27.         d: function () {
  28.             return _pad(f.j(), 2);
  29.         },
  30.         D: function () {
  31.             return f.l().slice(0, 3);
  32.         },
  33.         j: function () {
  34.             return jsdate.getDate();
  35.         },
  36.         l: function () {
  37.             return txt_words[f.w()] + ‘day’;
  38.         },
  39.         N: function () {
  40.             return f.w() || 7;
  41.         },
  42.         S: function () {
  43.             return txt_ordin[f.j()] || ‘th’;
  44.         },
  45.         w: function () {
  46.             return jsdate.getDay();
  47.         },
  48.         z: function () {
  49.             var a = new Date(f.Y(), f.n()1, f.j()),
  50.                 b = new Date(f.Y(), 0, 1);
  51.             return Math.round((a – b) / 864e5) + 1;
  52.         },
  53.         W: function () {
  54.             var a = new Date(f.Y(), f.n()1, f.j() – f.N() + 3),
  55.                 b = new Date(a.getFullYear(), 0, 4);
  56.             return 1 + Math.round((a – b) / 864e5 / 7);
  57.         },
  58.         F: function () {
  59.             return txt_words[6 + f.n()];
  60.         },
  61.         m: function () {
  62.             return _pad(f.n(), 2);
  63.         },
  64.         M: function () {
  65.             return f.F().slice(0, 3);
  66.         },
  67.         n: function () {
  68.             return jsdate.getMonth() + 1;
  69.         },
  70.         t: function () {
  71.             return (new Date(f.Y(), f.n(), 0)).getDate();
  72.         },
  73.         L: function () {
  74.             var y = f.Y(), a = y & 3, b = y % 4e2, c = y % 1e2;
  75.             return 0 + (!a && (c || !b));
  76.         },
  77.         o: function () {
  78.             var n = f.n(), W = f.W(), Y = f.Y();
  79.             return Y + (n === 12 && W < 9 ? -1 : n === 1 && W > 9);
  80.         },
  81.         Y: function () {
  82.             return jsdate.getFullYear();
  83.         },
  84.         y: function () {
  85.             return (f.Y() + "").slice(-2);
  86.         },
  87.         a: function () {
  88.             return jsdate.getHours() > 11 ? "pm" : "am";
  89.         },
  90.         A: function () {
  91.             return f.a().toUpperCase();
  92.         },
  93.         B: function () {
  94.             var H = jsdate.getUTCHours() * 36e2,
  95.                 i = jsdate.getUTCMinutes() * 60,
  96.                 s = jsdate.getUTCSeconds();
  97.             return _pad(Math.floor((H + i + s + 36e2) / 86.4) % 1e3, 3);
  98.         },
  99.         g: function () {
  100.             return f.G() % 12 || 12;
  101.         },
  102.         G: function () {
  103.             return jsdate.getHours();
  104.         },
  105.         h: function () {
  106.             return _pad(f.g(), 2);
  107.         },
  108.         H: function () {
  109.             return _pad(f.G(), 2);
  110.         },
  111.         i: function () {
  112.             return _pad(jsdate.getMinutes(), 2);
  113.         },
  114.         s: function () {
  115.             return _pad(jsdate.getSeconds(), 2);
  116.         },
  117.         u: function () {
  118.             return _pad(jsdate.getMilliseconds() * 1000, 6);
  119.         },
  120.         e: function () {
  121.             return ‘UTC’;
  122.         },
  123.         I: function () {
  124.             var a = new Date(f.Y(), 0),
  125.                 c = Date.UTC(f.Y(), 0),
  126.                 b = new Date(f.Y(), 6),
  127.                 d = Date.UTC(f.Y(), 6);
  128.             return 0 + ((a – c) !== (b – d));
  129.         },
  130.         O: function () {
  131.             var a = jsdate.getTimezoneOffset();
  132.             return (a > 0 ? "-" : "+") + _pad(Math.abs(a / 60 * 100), 4);
  133.         },
  134.         P: function () {
  135.             var O = f.O();
  136.             return (O.substr(0, 3) + ":" + O.substr(3, 2));
  137.         },
  138.         T: function () {
  139.             return ‘UTC’;
  140.         },
  141.         Z: function () {
  142.             return -jsdate.getTimezoneOffset() * 60;
  143.         },
  144.         c: function () {
  145.             return ‘Y-m-d\\Th:i:sP’.replace(formatChr, formatChrCb);
  146.         },
  147.         r: function () {
  148.             return ‘D, d M Y H:i:s O’.replace(formatChr, formatChrCb);
  149.         },
  150.         U: function () {
  151.             return Math.round(jsdate.getTime() / 1000);
  152.         }
  153.     };
  154.     this.date = function (format, timestamp) {
  155.         that = this;
  156.         jsdate = (
  157.             (typeof timestamp === ‘undefined’) ? new Date() :
  158.             (timestamp instanceof Date) ? new Date(timestamp) :
  159.             new Date(timestamp * 1000)
  160.         );
  161.         return format.replace(formatChr, formatChrCb);
  162.     };
  163.     return this.date(format, timestamp);
  164. }
  165. alert(date("F j, Y, g:i a"));

 

Ah ouais, j’avais dis ‘un peu de code’ 🙂

 

Le site phpjs.org nous propose un package avec tout un tas de fonctions Javascript ayant le même nom et la même syntaxe.
Tu n’as pas besoin de tout ce package car seules les fonctions traitant de la date et de l’heure t’intéresses ? Pas de problème, phpjs.org te propose également de te compiler un fichier Javascript avec les fonctions que tu auras sélectionné, c’est ici

 

Ce package est sous double licence MIT et GPL V2.

 

Merci à Geekarlier

Les commentaires sont ouverts, lâches toi !


2 Responses to “Utiliser les fonctions PHP en Javascript !”

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

  • Featured Posts

  • Popular Posts