//>unicode解碼函數,如\u6d4b\u8bd5\u6570\u503c轉為測試數值(unicode值)
public function unicode_decode($str){
$str = str_replace("\\","%",$str);
$str = rawurldecode($str);
$r = [];
preg_match_all("/(?:%u.{4})|.{4};|&#\d+;|.+/U",$str,$r);
$ar = $r[0];
foreach($ar as $k=>$v) {
if (substr($v, 0, 2) === "%u") {
$ar[$k] = iconv("UCS-2", "utf-8", pack("H4", substr($v, -4)));
} elseif (substr($v, 0, 3) === "") {
$ar[$k] = iconv("UCS-2", "utf-8", pack("H4", substr($v, 3, -1)));
} elseif (substr($v, 0, 2) === "&#") {
$ar[$k] = iconv("UCS-2", "utf-8", pack("n", substr($v, 2, -1)));
}
}
return join("",$ar);
}
//>SGML 類語言的轉義(中文)
public function sgml_encode($str,$encoding='utf-8',$prefix ='&#',$postfix=';'){
$str = iconv($encoding, 'UCS-2//IGNORE', $str);
$arrstr = str_split($str, 2);
$unistr = '';
for($i = 0, $len = count($arrstr); $i < $len; $i++) {
$dec = hexdec(bin2hex($arrstr[$i]));
$unistr .= $prefix . $dec . $postfix;
}
return $unistr;
}
//>字符串SBH式加密[暫不支持中文](字符串)
public function SBHJM($str){
$str = self::sbh_split($str);
$num = []; //>數字容器
$text = []; //>其他字符容器
//>分離數字與非數字
foreach ($str as $lab => $val){
is_numeric($val)?$num[] = array($lab,$val):$text[] = array($lab,$val);
}
//>定義函數常量
$fenge = "^:^";
$rand = [];
$rand[] = "%"; $rand[] = "^"; $rand[] = "&";
$rand[] = "*"; $rand[] = "("; $rand[] = ")";
//>數字處理
if (empty($num)){
$num_obj = "m86j10x".$fenge."i31gk";
}else {
$num_obj_0 = [];
$num_obj_1 = [];
$num_obj_1[] = "1";
foreach ($num as $val){
$num_obj_0[] = $val[0].$rand[rand(0,5)];
$num_obj_1[] = $val[1];
}
//>判斷位數處理
$duan = ceil(count($num_obj_1)/9);
$num_obj_tmp = [];
for ($i=0;$i<$duan;$i++){
$obj = [];
for ($j=($i*9);$j<(($i+1)*9);$j++){
$obj[] = isset($num_obj_1[$j])?$num_obj_1[$j]:'';
}
$num_obj_tmp[] = decoct(implode($obj));
}
$num_obj_tmp = implode(".",$num_obj_tmp);
$num_obj = strrev(implode($num_obj_0)).$fenge.$num_obj_tmp;
}
//>非數字處理
if (empty($text)){
$text_obj = "&*%~!@";
}else {
$text_obj = [];
foreach ($text as $lab => $val){
$text_obj[] = $val[1].$val[0];
}
$text_obj = strrev(implode($text_obj));
}
$secret = $num_obj.$fenge.$text_obj;
return $secret;
}
//>字符串SBH式解密[暫不支持中文](字符串)
public function unSBHJM($str){
$obj = [];
$fenge = "^:^";
$str = explode($fenge,$str);
if ($str[0]!="m86j10x"&&$str[1]!="i31gk"){
$num_obj_0 = explode("~",preg_replace("/[\%\^\&\*\(\)]/","~",strrev($str[0])));
$tmp = [];
foreach ($num_obj_0 as $val){
$val === ""? NULL :$tmp[]=$val;
}
$num_obj_0 = $tmp;
$num_obj_1 = explode(".",$str[1]);
$num_obj_tmp = [];
foreach ($num_obj_1 as $lab => $val){
$val_8 = octdec($val); //>八進制轉十進制
if ($lab>=(count($num_obj_1)-1)||strlen($val_8)==9){
$num_obj_tmp[] = $val_8;
}else {
$bqz = 9-strlen($val_8); //>補全數
$num = []; for ($i=0;$i<$bqz;$i++){ $num[] = "0"; }
$num_obj_tmp[] = implode($num).$val_8;
}
}
//>尾數補全
$tmp_lab = strlen(implode($num_obj_tmp)); //>鍵字符數
$tmp_val = count($num_obj_0); //>值字符數
if ($tmp_lab<=$tmp_val){
$bqz = $tmp_val - $tmp_lab;
$num = []; for ($i=0;$i<=$bqz;$i++){ $num[] = "0"; }
$num_obj_tmp[(count($num_obj_tmp)-1)] = implode($num).$num_obj_tmp[(count($num_obj_tmp)-1)];
}
$num_obj_tmp = self::sbh_split(substr(implode($num_obj_tmp),1));
foreach ($num_obj_0 as $lab => $val){
$obj[$val] = $num_obj_tmp[$lab];
}
}
if ($str[2]!="&*%~!@"){
preg_match_all("/[0-9]+[a-zA-Z\/\~\!\@\#\$\%\^\&\*\(\)\_\-\=\+\{\}\'\"\?\|\<\>\,\.\;\:\[\]\\\]/",$str[2],$text_obj);
$text_obj_0 = [];
$text_obj_1 = [];
foreach ($text_obj[0] as $val){
preg_match("/[a-zA-Z\/\~\!\@\#\$\%\^\&\*\(\)\_\-\=\+\{\}\'\"\?\|\<\>\,\.\;\:\[\]\\\]/",$val,$tmp);
$text_obj_0[] = strrev(str_replace($tmp[0],"",$val));
$text_obj_1[] = $tmp[0];
}
foreach ($text_obj_0 as $lab => $val){
$obj[$val] = $text_obj_1[$lab];
}
}
ksort($obj);
return implode($obj);
}
//>64加密算法
function encode_64($data, $key){
$key = md5($key);
$x = 0;
$len = strlen($data);
$l = strlen($key);
$char = '';
for ($i = 0; $i < $len; $i++){
if ($x == $l){
$x = 0;
}
$char .= $key{$x};
$x++;
}
$str = '';
for ($i = 0; $i < $len; $i++){
$str .= chr(ord($data{$i}) + (ord($char{$i})) % 256);
}
return base64_encode($str);
}
//>64解密算法
function decode_64($data, $key){
$key = md5($key);
$x = 0;
$data = base64_decode($data);
$len = strlen($data);
$l = strlen($key);
$char = '';
for ($i = 0; $i < $len; $i++){
if ($x == $l) {
$x = 0;
}
$char .= substr($key, $x, 1);
$x++;
}
$str = '';
for ($i = 0; $i < $len; $i++){
if (ord(substr($data, $i, 1)) < ord(substr($char, $i, 1))){
$str .= chr((ord(substr($data, $i, 1)) + 256) - ord(substr($char, $i, 1)));
}else{
$str .= chr(ord(substr($data, $i, 1)) - ord(substr($char, $i, 1)));
}
}
return $str;
}
//>APP數據加解密(傳輸字段,加密密鑰,操作類型)
public function appCode($string, $auth_key, $operation='ENCODE') {
$key = md5($auth_key);
$key_length = strlen($key);
//base64_decode 默認是 iso-8859-1 轉 UTF-8 用 utf8_decode(base64_decode($string))
$string = $operation == 'DECODE' ? utf8_decode(base64_decode($string)) : substr(md5($string.$key), 0, 8).$string;
$string_length = strlen($string);
$rndkey = $box = array();
$result = '';
for($i = 0; $i <= 255; $i++) {
$rndkey[$i] = ord($key[$i % $key_length]);
$box[$i] = $i;
}
for($j = $i = 0; $i < 256; $i++) {
$j = ($j + $box[$i] + $rndkey[$i]) % 256;
$tmp = $box[$i];
$box[$i] = $box[$j];
$box[$j] = $tmp;
}
for($a = $j = $i = 0; $i < $string_length; $i++) {
$a = ($a + 1) % 256;
$j = ($j + $box[$a]) % 256;
$tmp = $box[$a];
$box[$a] = $box[$j];
$box[$j] = $tmp;
$result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));
}
if($operation == 'DECODE') {
if(substr($result, 0, 8) == substr(md5(substr($result, 8).$key), 0, 8)) {
return substr($result, 8);
} else {
return '';
}
} else {
//base64_encode 默認是 iso-8859-1 轉 UTF-8 用 base64_encode(utf8_encode($result))
return str_replace('=', '',base64_encode(utf8_encode($result)));
}
}
//>將字符串內容完全分離成單個字符數組(字符串)
private function sbh_split($string){
return preg_split('/(?<!^)(?!$)/u',$string);
}
//>私鑰加密函數(待加密字符,私鑰內容)
public function ras_encond_pri($data, $private_key) {
$data = str_split($data, 117);
$outstr = '';
foreach ($data as $val) {
openssl_private_encrypt($val, $encryptData, $private_key);
$outstr .= $encryptData;
}
return base64_encode($outstr);
}
//>公鑰解密函數(密文,公鑰內容)
public function ras_decond_pub($data,$public_key) {
$data = str_split(base64_decode($data), 128);
$outstr = '';
foreach ($data as $val) {
openssl_public_decrypt($val, $output, $public_key);
$outstr .= $output;
}
return $outstr;
}
//>公鑰加密函數(待加密字符,公鑰內容)
public function ras_encond_pub($data, $public_key) {
$data = str_split($data, 117);
$outstr = '';
foreach ($data as $val) {
openssl_public_encrypt($val, $encryptData, $public_key);
$outstr .= $encryptData;
}
return base64_encode($outstr);
}
//>私鑰解密函數(密文,私鑰內容)
public function ras_decond_pri($data, $private_key) {
$data = str_split(base64_decode($data), 128);
$outstr = '';
foreach ($data as $val) {
openssl_private_decrypt($val, $output, $private_key);
$outstr .= $output;
}
return $outstr;
}##### 類調用方法
~~~
$T_C = new char\tool();
~~~
- Debug 錯誤處理核
- API類
- time_mic 當前時間節點
- timeout 統計各節點延遲
- SQL類
- record 記錄語句錯誤日志
- log 用戶行為記錄
- HTTP 遠程處理核
- API 類
- interaction 模擬傳輸函數
- remote遠程文件導入本地
- ASO函數-蘋果APP信息獲取
- E-MAIL類
- email 發送郵件函數
- UpLoad 類
- upload 上傳文件
- call 文件調用類
- del 清除上傳文件
- Redis 緩存核
- api類
- conf配置
- SQL 數據庫核
- API類
- conf數據庫配置函數
- create創建數據表
- add新增數據函數
- edit編輯數據函數
- del刪除數據函數
- import導入外部語句函數
- addid最近添加數據索引函數
- tab_info獲取表信息函數
- shiwu事務處理函數
- alert字段處理函數
- field獲取表字段函數
- row 讀取單條數據函數
- arr讀取多條數據函數
- view創建視圖函數
- data_format格式化數據函數
- drop刪除表函數
- sql_safe防注入處理函數
- per類
- set權限設定
- look模塊查看權限檢查
- check權限判定
- user 獲取當前登錄用戶數據
- Tool 工具核
- char 字符類
- byte字節單位轉換
- sbh_split將字符串分割成數組
- format字符串格式化
- top_zm獲取中文頭字母
- jizhan_index 基站索引格式化
- catalog_class 定義目錄層級
- illegal 非法字眼驗證
- convertEncoding 轉換編碼
- unicode_encode 類語言編譯
- SBHJM SBH式加解密
- encode_64 加解密
- appCode 數據加解密
- rsa_encond_pri RSA公私鑰加解密
- aes_encode AES加解密
- code 加密類
- RAS公私鑰加解密
- unicode_decode Unicode解碼解析
- sgml_encode類語言轉義
- SBH加解密
- base64加解密
- app式加解密
- file 文件類
- file_open獲取文件內容
- file_create創建文件
- dir_del刪除目錄
- ip 類
- IP數據處理
- rand 隨機類
- rand_value概率隨機數
- rand_ip隨機獲取國內ip
- rand_nickname隨機獲取昵稱
- rand_mobile隨機獲取手機號
- time 時間類
- shijian時間單位轉換
- time時間戳格式化
- getmicrotime獲取毫秒時間戳
- micdatetime轉換毫秒時間戳為時間
- mictime轉換毫秒時間為時間戳
- zip 封裝類
- zip壓縮處理
- unzip解壓處理
- zip_num壓縮包內文件數
- zip_see搜索并讀取包文件
- distance 距離類
- count 計算兩經緯度距離
- jizhan 基站類
- mnc 移動設備網絡代碼及運營商解析
- market 市場類
- phone_agio 手機折價計算
- iframe 后臺框架核
- api類
- a超文本鏈接
- lab_status狀態欄小圖標
- cache_clear清除用戶登錄緩存
- nav導航欄路徑
- copy 點擊復制
- image略縮圖處理
- notification 首頁消息窗體
- chars 首頁曲線圖
- check_login 框架外部判斷賬戶是否登錄
- lightninimage 點擊略縮圖顯示大圖
- introduction 介紹信息框
- domain_limit 域名訪問限制
- bar 進度條
- chart 圖表類
- points 曲線圖
- stack 柱狀圖
- pie 餅狀圖
- noty 懸浮提示框類
- js_note 動態腳本提示框
- Input 后臺表單核
- input模板使用規范
- 新增模板
- 編輯模板
- 表單屬性數組
- 表單限制
- Lis 后臺列表核
- api類
- $sbh_box 展示框設置
- $sbh_search 列表篩選條件參數
- $sbh_database['label'] 列表左上角圖標
- $sbh_database['title'] 列表標題
- $sbh_database['submit'] 列表按鈕
- $sbh_database['field'] 列表字段參數
- $sbh_database['data'] 獲取數據
- $sbh_database['set'] 數據特殊處理
- $sbh_database['fenye'] 分頁處理
- $sbh_database['batch'] 批量處理設置
- $sbh_database['option'] 字段操作處理
- chart 后臺圖表核
- 新建模板
- 圖表創建實例
- BC 運氣核
- api類
- pl 賠率函數
- dynamic_pl 動態賠率函數
- wx 微信核
- api類
- xml 統一下單生產XML格式
- sign 簽名標識
- back_xml 回調解析XML為數組
- back 微信異步回調處理結果
- qrcode