function decode(C) {
        var digi=16;
        var add= 10;
        var plus=7;
        var cha=36;
        var I = -1;
        var H = 0;
        var B = "";
        var J = C.length;
        var G = C.charCodeAt(J - 1);
        C = C.substring(0, J - 1);
        J--;
        for (var E = 0; E < J; E++) {
            var D = parseInt(C.charAt(E), cha) - add;
            if (D >= add) {
                D = D - plus
            }
            B += (D).toString(cha);
            if (D > H) {
                I = E;
                H = D
            }
        }
        var A = parseInt(B.substring(0, I), digi);
        var F = parseInt(B.substring(I + 1), digi);
        var L = (A + F - parseInt(G)) / 2;
        var K = (F - L) / 100000;
        L /= 100000;
        return {
            lat: K,
            lng: L
        }
}
document.write(decode('HHDFJGZVVIHIJG').lat+','+decode('HHDFJGZVVIHIJG').lng);这个JS函数的功能怎么用PHP写呀。。谢谢了,这个函数运行结果:39.09917,117.22348

解决方案 »

  1.   

    直译即可print_r(decode('HHDFJGZVVIHIJG'));function decode($C) {
      $digi = 16;
      $add = 10;
      $plus = 7;
      $cha = 36;
      $I = -1;
      $H = 0;
      $B = "";
      $J = strlen($C);
      $G = ord($C{$J - 1});
      $C = substr($C, 0, -1);
      $J--;
      for ($E = 0; $E < $J; $E++) {
        $D = base_convert($C{$E}, $cha, 10) - $add;
        if ($D >= $add) {
          $D = $D - $plus;
        }
        $B .= base_convert($D, 10, $cha);
        if ($D > $H) {
          $I = $E;
          $H = $D;
        }
      }
      $A = base_convert(substr($B,0, $I), $digi, 10);
      $F = base_convert(substr($B, $I + 1), $digi, 10);
      $L = ($A + $F - $G) / 2;
      $K = ($F - $L) / 100000;
      $L /= 100000;
      return array( 'lat' => $K, 'lng' => $L);
    }
    Array ( [lat] => 39.09917 [lng] => 117.22348 )
      

  2.   

    强。。学习了,原来JS,charCodeAt(J - 1)等于PHP的ord($C{$J - 1})呀,,,谢谢了,结贴给分