规范图集的解压码
*
* @param string $mac 加密后的解压码
* @return string 解密后的解压码
*/
public static function macDecode($mac) {
$key = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
$str = '';
$len = strlen($mac);
for ($i=0;$i<$len;$i++) {
if (strpos($key,substr($mac,$i,1)) === false) {
return false;
} else { // 找到字符串中的字母,然后拼装成新的字符串,在用base64_decode解密出来。
$str .= substr($key,strpos($key,substr($mac,$i,1)),1); // 找到这个字符在$key中位置,然后取出这个字符
}
}
return base64_decode(self::_utf8_decode($str)); // 返回解密后的内容
}//END macDecode()
/** UTF-8转GBK方法 */
private static function _utf8_decode ($utf8) { // 先把&#开头的16进制数据替换成正常文本数据 // 参考代码来自discuz3.2gbk版本common.func.php // 由朱金魁修正:去除了不必要的死循环。 /*if(!function_exists('diconv')){*/ preg_match_all("/&#[0-9]{2};/", $utf8, $ar); if (!empty($ar[0])) { foreach ($ar[0] as $_split){ if (!isset ($splits)){ $splits = $_split; } else { $splits .= "|" . $_split; } } /*if (preg_match("/&#[0-9]{2};/", $splits)){ exit ("charset error"); }*/ preg_match_all("/$splits/",$utf8 ,$toentities); foreach ($toentities[0] as $_entity){ if (preg_match("/&#([0-9]+);/", $_entity ,$num)){ /*if (!function_exists('diconv'))*/ //echo iconv('UTF-8','GBK',chr(intval($num['1']))) ; /*else*/ echo diconv(chr(intval(trim($num['1']))) , 'UTF-8' , 'GBK'); } } return preg_replace("/$splits/" , '' ,$utf
创作工场
免责声明:
以上内容除特别注明外均来源于网友提问,创作工场回答,未经许可,严谨转载。
点击这里>>使用🔥专业版,更聪明、更完整、更原创!