1

我有以下 javascript 代码:

var _keyStr = "ZYX10+/PONM765LKJIAzyTSRQGxwvuHWVFEDUCBtsrqdcba9843ponmlkjihgfe2";

function _utf8_decode(e) {
    for (var t = "", i = 0, o = c1 = c2 = 0; i < e.length;)(o = e.charCodeAt(i)) < 128 ? (t += String.fromCharCode(o), i++) : o > 191 && o < 224 ? (c2 = e.charCodeAt(i + 1), t += String.fromCharCode((31 & o) << 6 | 63 & c2), i += 2) : (c2 = e.charCodeAt(i + 1), c3 = e.charCodeAt(i + 2), t += String.fromCharCode((15 & o) << 12 | (63 & c2) << 6 | 63 & c3), i += 3);
    return t
}

function decode(e) {
    var t, i, o, s, a, r, n = "",
        l = 0;
    for (e = e.replace(/[^A-Za-z0-9+\/=]/g, ""); l < e.length;) t = _keyStr.indexOf(e.charAt(l++)) << 2 | (s = _keyStr.indexOf(e.charAt(l++))) >> 4, i = (15 & s) << 4 | (a = _keyStr.indexOf(e.charAt(l++))) >> 2, o = (3 & a) << 6 | (r = _keyStr.indexOf(e.charAt(l++))), n += String.fromCharCode(t), 64 != a && (n += String.fromCharCode(i)), 64 != r && (n += String.fromCharCode(o));
    return n = _utf8_decode(n)
}

现在我想在 php.ini 中使用这个函数。但我不知道如何从 php.ini 调用 javascript 函数。以前我尝试重写代码如下:

function decode($e){
  $t = '';
  $i = '';
  $o = '';
  $s = '';
  $a = '';
  $r = '';
  $n = '';
  $l = 0;
  $keyString  = 'ZYX10+/PONM765LKJIAzyTSRQGxwvuHWVFEDUCBtsrqdcba9843ponmlkjihgfe2';

  for($e = preg_replace('/[^A-Za-z0-9+\/=]/','',$e); $l<strlen($e);$l++){
    $t  = strpos($keyString[$l]) << 2 | ($s  = strpos($keyString[$l])) >> 4;
    $i = (15 & $s) << 4|($a  = strpos($keyString[$l])) >> 2;
    $o = (3 & $a) << 6|($r  = strpos($keyString[$l]));
    $n += chr($t);
    64 != $a && ($n += chr($i));
    64 != $r && ($n += chr($o));
  }

    return $n;
    }

但不起作用:/

4

1 回答 1

0

从外观上看,这只是带有自定义键的 base64 吗?那么为什么不做

function decode($input) {
    $custom = 'ZYX10+/PONM765LKJIAzyTSRQGxwvuHWVFEDUCBtsrqdcba9843ponmlkjihgfe2';
    $default = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
    $decoded = base64_decode(strtr($input, $custom, $default));
    return $input;
}

这是基于https://stackoverflow.com/a/45964586/8355065的代码

于 2019-12-29T21:00:51.147 回答