初始化

This commit is contained in:
muzihuaner
2026-03-14 23:26:53 +08:00
parent 30348c6dba
commit 6c5e43ae2d
59 changed files with 13770 additions and 0 deletions

989
need.php Normal file
View File

@@ -0,0 +1,989 @@
<?php
class need{
public static $info = [];
/*
* 获取域名
*/
public static function getHost()
{
return (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : false);
}
/*
* emoji转换为UTF-32编码
* @parameter $emoji -> String emoji表情
*/
public static function emoji2utf($emoji) {
$hex = bin2hex(mb_convert_encoding($emoji, 'UTF-32', 'UTF-8'));
return 'u'.substr($hex, 3);
}
/*
* Skey或pskey进行转码
*/
public static function GTK($skey) {
$len = strlen((String)$skey);
$hash = 5381;
for ($i = 0; $i < $len; $i++) {
$hash += ($hash << 5 & 2147483647) + ord($skey[$i]) & 2147483647;
$hash &= 2147483647;
}
return $hash & 2147483647;
}
/*
* json格式化输出
*/
public static function json($arr) {
header('Content-type: application/json; charset=utf-8;');
return json_encode($arr,JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
}
/*
* 输出
*/
public static function send($Msg, $Type = 'jsonp') {
header('Content-Type:application/json; charset=utf-8;');
if($Type == 'text') {
echo $Msg;
exit();
}else if($Type == 'location') {
header('location:'.$Msg);
exit();
}else if($Type == 'image') {
header('Content-type:image/png;image/jpeg;image/gif;');
//header('Content-type:image/jpeg');
$curl = New need;
echo $curl->teacher_curl($Msg);
exit();
}else if($Type == 'url') {
echo $Msg;
exit();
}else if($Type == 'tion') {
echo $Msg;
exit();
}else if($Type == 'jsonp') {
echo stripslashes(json_encode($Msg,JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES));
exit();
}else{
echo json_encode($Msg,JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
exit();
}
}
/*
* 获取访问者IP
*/
public static function userip() {
$unknown = 'unknown';
if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])&&$_SERVER['HTTP_X_FORWARDED_FOR']&&strcasecmp($_SERVER['HTTP_X_FORWARDED_FOR'],$unknown)) {
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
} else if(isset($_SERVER['REMOTE_ADDR'])&&$_SERVER['REMOTE_ADDR']&&strcasecmp($_SERVER['REMOTE_ADDR'],$unknown)) {
$ip=$_SERVER['REMOTE_ADDR'];
}
return $ip;
}
/*
* qqvip的一种gtk加密但是已经被腾讯弃用了
*/
public static function vipgtk($skey) {
$salt=5381;
$md5key='tencentQQVIP123443safde&!%^%1282';
$hash=array();
$hash[]=$salt<<5;
for ($i=0; $i<strlen($skey); ++$i) {
$acode=ord(substr($skey,$i,1));
$hash[]=($salt<<5)+$acode;
$salt=$acode;
}
$md5str=md5(join('',$hash).$md5key);
return $md5str;
}
/*
* 判断访问者是不是get
*/
public static function get_post() {
if( $_SERVER['REQUEST_METHOD'] === 'GET') {
return true;
}else{
return false;
}
}
/*
* 获取毫秒时间戳
*/
public static function getMillisecond() {
list($t1, $t2) = explode(' ', microtime());
return (float)sprintf('%.0f',(floatval($t1)+floatval($t2))*1000);
}
/*
* 忘了
*/
public static function run_encode($msg) {
$msg = idn_to_ascii($msg,IDNA_NONTRANSITIONAL_TO_ASCII,INTL_IDNA_VARIANT_UTS46);
return $msg;
}
/*
* 忘了
*/
public static function run_decode($msg) {
$msg = idn_to_utf8($msg);
return $msg;
}
/*
* 16进制转码不过没什么用
*/
public static function hex_encode($str) {
$hex="";
for($i=0;$i<strlen($str);$i++)
$hex .= '\\u4E'.dechex(ord($str[$i]));
$hex=$hex;
return $hex;
}
/*
* 16进制解码也没什么用
*/
public static function hex_decode($hex) {
$str="";
for($i=0;$i<strlen($hex)-1;$i+=2)
$str.=chr(hexdec($hex[$i].$hex[$i+1]));
return $str;
}
/*
* unicode 解码
*/
public static function decodeUnicode($str) {
return preg_replace_callback('/\\\\u([0-9a-f]{4})/i',
@create_function(
'$matches',
'return mb_convert_encoding(pack("H*", $matches[1]), "UTF-8", "UCS-2BE");'
),
$str);
}
/*
* unicode转码
*/
public static function encodeUnicodes($str) {
$decode = json_decode('{"text":"'.$str.'"}',true);
if(!$decode) {
return $str;
}else{
$encode = json_encode($decode);
preg_match_all('/text":"(.*?)"/',$encode,$encode);
$encode = str_replace('\\u4e','',$encode[1][0]);
$encode = str_replace('\\u4E','',$encode);
return $encode;
}
}
/*
* 转码加密
*/
public static function jiami($string) {
$str = self::hex_encode($string);
$str = self::decodeUnicode($str);
return ($str);
}
/*
* 转码解密
*/
public static function jiemi($string) {
$str = self::encodeUnicodes($string);
$str = self::hex_decode($str);
return $str;
}
/*
* 获取时间戳毫秒
*/
public static function time_sss() {
list($t1, $t2) = explode(' ', microtime());
return (float)sprintf('%.0f',(floatval($t1)+floatval($t2))*1000);
}
/*
* 获取http状态码
*/
public static function http($url) {
$ch = curl_init();
$timeout = 3;
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch,CURLOPT_URL,$url);
curl_exec($ch);
return $httpcode = curl_getinfo($ch,CURLINFO_HTTP_CODE);
curl_close($ch);
}
/*
* 判断是不是qq或者群
*/
public static function is_num($num) {
if(preg_match('/^[1-9][0-9]{4,11}$/', (String)$num)) {
return true;
}else{
return false;
}
}
/*
* Cookie
*/
public static function Robot($dir,$key) {
// $array = @file_get_contents($dir.'Robot_Pskey_Skey.json');
// $array = json_decode($array,true);
// return $array[$key];
return self::cookie($key, true);
}
/*
* Cookie
*/
public static function cookie($key,$Value = false) {
return 'a';
}
/*
* 没用
*/
public static function emoji($text) {
$array = array(
'🐶'=>'狗',
'🐱'=>'猫',
'🐭'=>'鼠',
'🐹'=>'仓鼠',
'🐰'=>'兔',
'🦊'=>'狐狸',
'🐻'=>'熊',
'🐼'=>'熊猫',
'🐨'=>'考拉',
'🐯'=>'虎',
'🦁'=>'狮',
'🐮'=>'牛',
'🐷'=>'猪',
'🐽'=>'猪鼻子',
'🐸'=>'青蛙',
'🐵'=>'猴',
'🐔'=>'鸡',
'🐕'=>'小狗',
'🐂'=>'小牛',
'🐴'=>'马',
'🐎'=>'小马',
'🐖'=>'小猪',
'🦆'=>'鸭',
'🐥'=>'小鸡',
'🐓'=>'公鸡',
'🦅'=>'鹰',
'🦉'=>'猫头鹰',
'🦇'=>'蝙蝠',
'🐺'=>'狼',
'🐗'=>'野猪',
'🦄'=>'独角兽',
'🐝'=>'蜜蜂',
'🐛'=>'虫',
'🦋'=>'蝴蝶',
'🐌'=>'蜗牛',
'🐉'=>'龙',
'🐟'=>'鱼',
'🦐'=>'虾',
'🦞'=>'龙虾',
'🌶️'=>'辣椒',
'🦀'=>'螃蟹',
'🦈'=>'鲨鱼',
'🌿'=>'草',
'🌸'=>'花',
'🍉'=>'瓜',
'💦'=>'汗',
'☀️'=>'太阳',
'🌤'=>'晴转多云',
'⛅'=>'阴',
'🌦️'=>'晴转雨',
'🌧️'=>'小雨',
'⛈️'=>'雷阵雨',
'🌩️'=>'打雷',
'🌧️'=>'大雨',
'❄️'=>'雪花',
'🌨️'=>'雪',
'🌟'=>'闪光星星',
'⚡'=>'电',
'💧'=>'水滴',
'☔'=>'雨伞',
'🌈'=>'彩虹',
'🌊'=>'海浪',
'🌫️'=>'雾',
'🌪️'=>'龙卷风',
'☄️'=>'彗星',
'🪐'=>'有环行星',
'⭐'=>'星',
'✨'=>'闪光',
'👀'=>'看',
'🌝'=>'微笑月亮',
'🌞'=>'微笑太阳',
'🌚'=>'微笑朔月',
'🌙'=>'月亮',
'🌛'=>'微笑上弦月',
'🌜'=>'微笑下弦月',
'🌕'=>'满月',
'🌖'=>'亏凸月',
'🌗'=>'下弦月',
'🌘'=>'残月',
'🌔'=>'盈凸月',
'🌓'=>'上弦月',
'🌒'=>'娥眉月',
'🌑'=>'朔月',
'🚗'=>'汽车',
'🚌'=>'公交车',
'🚞'=>'火车',
'🚚'=>'货车',
'✈️'=>'飞机',
'🚕'=>'出租车',
'🍜'=>'面',
'🐦'=>'鸟',
'🚓'=>'警车',
'🚢'=>'船',
'☃️'=>'雪人',
'㊗️'=>'祝',
'🈷️'=>'月',
'👍🏻'=>'赞',
'🍺'=>'啤酒',
'🎁'=>'礼物',
'🎆'=>'烟花',
'🎉'=>'恭喜',
'🎄'=>'圣诞',
'🍎'=>'苹果',
'🍐'=>'梨',
'🍌'=>'香蕉',
'🍇'=>'葡萄',
'🍓'=>'草莓',
'🍅'=>'西红柿',
'🍊'=>'橘子',
'🥚'=>'蛋',
'🍚'=>'米饭',
'🦴'=>'骨',
'🥁'=>'鼓',
'📖'=>'书',
'🌲'=>'树',
'🍋'=>'柠檬',
'🍟'=>'薯条',
'🍔'=>'汉堡',
'🍠'=>'地瓜',
'🥩'=>'肉',
'🌹'=>'玫瑰',
'❤️'=>'心',
'🍳'=>'煎蛋',
'✂️'=>'剪刀',
'🍙'=>'饭团',
'🦍'=>'猩猩',
'❤'=>'心',
'💩'=>'💩',
'☂️'=>'伞',
'💰'=>'钱',
'💵'=>'美元',
'👄'=>'嘴',
'💄'=>'口红',
'🍼'=>'奶瓶',
'👍🏻'=>'赞',
'🦟'=>'蚊子',
'👻'=>'鬼',
'🐢'=>'乌龟',
'🐧'=>'企鹅',
'🐍'=>'蛇',
'🈲'=>'禁',
'🔞'=>'十八禁',
'🐁'=>'小白鼠',
'✍🏻'=>'写',
'👟'=>'鞋',
'⭕'=>'圈',
'🛠️'=>'工具',
'🛣️'=>'公路',
'🚥'=>'路灯',
'🌀'=>'飓风',
'👑'=>'皇冠',
'🥒'=>'黄瓜',
'🌼'=>'花',
'💊'=>'药',
'👨🏻'=>'男',
'👩🏻'=>'女',
'👴🏻'=>'爷',
'👵🏻'=>'奶',
'✌🏻'=>'耶',
'🉐'=>'得',
'㊙️'=>'秘',
'👅'=>'舔',
'🉑'=>'可',
'🈚'=>'无',
'💃🏻'=>'舞',
'😭'=>'哭',
'🙂'=>'微笑',
'🧵'=>'线',
'🤪'=>'滑稽',
'😆'=>'笑',
'😓'=>'汗',
'👌🏻'=>'好',
'🕰️'=>'钟',
'🀄'=>'中',
'🚿'=>'洗',
'🈶'=>'有',
'🆙'=>'升',
'🍑'=>'桃',
'🍵'=>'茶',
'🍬'=>'糖',
'🍭'=>'糖',
'🈯'=>'指',
'🌰'=>'栗子',
'😁'=>'嘻',
'😃'=>'哈',
'🈳'=>'空',
'😍'=>'色',
'🥵'=>'热',
'🥶'=>'冷',
'🕳️'=>'洞',
'👿'=>'恶魔',
'👏🏻'=>'鼓掌',
'🤮'=>'吐',
'😏'=>'坏笑'
);
foreach($array as $k=>$v) {
$text = str_replace($k,$v,$text);
}
return $text;
}
/*
* curl
*/
public static function teacher_curl($url, $paras = array()) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
if (@$paras['Header']) {
$Header = $paras['Header'];
} else {
$Header[] = "Accept:*/*";
$Header[] = "Accept-Encoding:gzip,deflate,sdch";
$Header[] = "Accept-Language:zh-CN,zh;q=0.8";
$Header[] = "Connection:close";
}
curl_setopt($ch, CURLOPT_HTTPHEADER, $Header);
if (@$paras['ctime']) { // 连接超时
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $paras['ctime']);
} else {
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
}
if (@$paras['rtime']) { // 读取超时
curl_setopt($ch, CURLOPT_TIMEOUT, $paras['rtime']);
}
if (@$paras['post']) {
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $paras['post']);
}else{
curl_setopt($ch, CURLOPT_HTTPGET, 1);
}
if (@$paras['header']) {
curl_setopt($ch, CURLOPT_HEADER, true);
}
if (@$paras['cookie']) {
if(@$paras['Cookie']) {
foreach(explode('; ', $paras['cookie']) as $v)
{
curl_setopt($ch, CURLOPT_COOKIE, $v);
}
} else {
curl_setopt($ch, CURLOPT_COOKIE, $paras['cookie']);
}
}
if (@$paras['refer']) {
if ($paras['refer'] == 1) {
curl_setopt($ch, CURLOPT_REFERER, 'http://m.qzone.com/infocenter?g_f=');
} else {
curl_setopt($ch, CURLOPT_REFERER, $paras['refer']);
}
}
if (@$paras['ua']) {
curl_setopt($ch, CURLOPT_USERAGENT, $paras['ua']);
} else {
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36");
}
if (@$paras['nobody']) {
curl_setopt($ch, CURLOPT_NOBODY, 1);
}
if(@$paras['resolve']) {
curl_setopt($ch, CURLOPT_IPRESOLVE, 1);
}
if(@$paras['jump']) {
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
}
curl_setopt($ch, CURLOPT_ENCODING, "gzip");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
/*
curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_BASIC); //代理认证模式
curl_setopt($ch, CURLOPT_PROXY, "114.114.114.114"); //代理服务器地址
//curl_setopt($ch, CURLOPT_PROXYPORT, 12635); //代理服务器端口
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
*/
if (@$paras['GetCookie']) {
curl_setopt($ch, CURLOPT_HEADER, 1);
$result = curl_exec($ch);
preg_match_all("/Set-Cookie: (.*?);/m", $result, $matches);
$headerSize = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
$header = substr($result, 0, $headerSize); //状态码
$body = substr($result, $headerSize);
$ret = [
"Cookie" => $matches, "body" => $body, "header" => $header, 'code' => curl_getinfo($ch, CURLINFO_HTTP_CODE)
];
curl_close($ch);
return $ret;
}
$ret = curl_exec($ch);
if(curl_errno($ch))
{
curl_close($ch);
return false;
}
if (@$paras['loadurl']) {
$Headers = curl_getinfo($ch);
$ret = $Headers['redirect_url'];
}
self::$info = curl_getinfo($ch);
curl_close($ch);
return $ret;
}
/*
* 随机获取一个IP
*/
public static function Rand_IP() {
#第一种方法,直接生成
$ip2id= round(rand(600000, 2550000) / 10000);
$ip3id= round(rand(600000, 2550000) / 10000);
$ip4id= round(rand(600000, 2550000) / 10000);
#第二种方法,随机抽取
$arr_1 = array("218","218","66","66","218","218","60","60","202","204","66","66","66","59","61","60","222","221","66","59","60","60","66","218","218","62","63","64","66","66","122","211");
$randarr= mt_rand(0,count($arr_1)-1);
$ip1id = $arr_1[$randarr];
return $ip1id.".".$ip2id.".".$ip3id.".".$ip4id;
}
/*
* get访问获取数据
*/
public static function getResponseBody($url) {
$ch = curl_init();
#5秒超时
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5000);
#设置默认ua 这里经常测试尽量用手机的ua,电脑的ua获取不到数据
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36');//'User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; vivo X9 Plus Build/LMY48Z) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/39.0.0.0 Mobile Safari/537.36');
#把随机ip添加进请求头
$httpheader = [];
$httpheader[] = 'X-FORWARDED-FOR:'.self::Rand_IP();
$httpheader[] = 'CLIENT-IP:'.self::Rand_IP();
#请求头中添加cookie
$httpheader[] = 'cookie:did=web_'.md5(time() . mt_rand(1,1000000)).'; didv='.time().'000;';
curl_setopt($ch, CURLOPT_HTTPHEADER, $httpheader);
#返回数据不直接输出
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
#设置请求地址
curl_setopt($ch, CURLOPT_URL, $url);
#关闭ssl验证
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
#设置默认referer
curl_setopt($ch, CURLOPT_REFERER, 'https://www.moestack.com');
#get方式请求
curl_setopt($ch, CURLOPT_POST, false);
$contents = curl_exec($ch);
curl_close($ch);
return $contents;
}
/*
* get访问获取头部
*/
public static function getResponseHeader($url) {
$ch = curl_init($url);
$httpheader = [];
$httpheader[] = 'X-FORWARDED-FOR:'.self::Rand_IP();
$httpheader[] = 'CLIENT-IP:'.self::Rand_IP();
#请求头中添加cookie
$httpheader[] = 'cookie:did=web_'.md5(time() . mt_rand(1,1000000)).'; didv='.time().'000;clientid=3; client_key=6589'.rand(1000, 9999);
curl_setopt($ch, CURLOPT_HTTPHEADER,$httpheader);
#以下两句设置返回响应头不返回响应体
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
#返回数据不直接输出
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$content = curl_exec($ch);
curl_close($ch);
return $content;
}
/*
* 获取get post请求可以get+号
*/
public static function request() {
$explode = explode('&', $_SERVER['QUERY_STRING']);
// print_r($explode);
$Request = [];
foreach($explode as $value) {
$explod = explode('=', $value, 2);
$Request[@$explod[0]] = @$explod[1] ?: null;
//print_r($explod);
unset($explod);
}
foreach($Request as $k=>$v) {
if(!empty($v)) {
$fileType = mb_detect_encoding($v, array('UTF-8','GBK','LATIN1','BIG5','GB2312')) ;
if($fileType != 'UTF-8') {
$data = mb_convert_encoding($v, 'utf-8', $fileType);
}else{
$data = $v;
}
}else{
$data = $v;
}
$array[$k] = urldecode((String) $data);
unset($data, $fileType);
}
// print_r($array);
return array_merge($array, $_POST);
}
/*
* 读取文件夹内某些文件的绝对路径
*/
public static function read_all($dir, ...$type) {
if (!is_dir($dir)) {
return array();
}
$dir = preg_replace('/\/$/', '', $dir);
$textarray = [];
$handle = opendir($dir);
if ($handle) {
while (($fl = readdir($handle)) !== false) {
$temp = iconv('utf-8', 'utf-8', $dir . DIRECTORY_SEPARATOR . $fl);
//转换成utf-8格式
//如果不加 $fl!='.' && $fl != '..' 则会造成把$dir的父级目录也读取出来
if (!(is_dir($temp) && $fl != '.' && $fl != '..')) {
if ($fl != '.' && $fl != '..') {
$suffix = substr(strrchr($fl, '.'), 1);
if($type)
{
foreach($type as $v) {
if ($suffix == $v) {
$textarray[] = array("path" => $dir . DIRECTORY_SEPARATOR, "name" => $fl, 'file'=>$dir.DIRECTORY_SEPARATOR.$fl, 'suffix'=>$suffix);
}
}
} else {
$textarray[] = array("path" => $dir . DIRECTORY_SEPARATOR, "name" => $fl, 'file'=>$dir.DIRECTORY_SEPARATOR.$fl, 'suffix'=>$suffix);
}
}
}
}
}
return $textarray;
}
/*
* 读取某些文件夹的所有子文件夹
*/
public static function read_all_dir($dir) {
if(!is_dir($dir)) {
return false;
}
$dir = preg_replace('/\/$/', '', $dir);
$array = scandir($dir);
// print_r($array);
foreach($array as $k=>$v) {
$temp = iconv('utf-8', 'utf-8', $dir . DIRECTORY_SEPARATOR . $v);
if(is_dir($temp) && $v != '.' && $v != '..') {
$dirarray[] = ['name'=>$v, 'path'=>$temp];
}
}
return $dirarray;
}
/*
* 获取跳转
*/
public static function loadurl($url, $Array = []) {
if(!isset($Array['loadurl']) || $Array['loadurl'] != 1) {
$Array['loadurl'] = 1;
}
$Array['nobody'] = 1;
$urls = self::teacher_curl($url, $Array);
if(stristr($urls, '//')) {
return self::loadurl($urls);
}
return $url;
}
/*
* ASCII转utf8
*/
public static function ASCII_UTF8($string) {
preg_match_all('/&#([0-9]+);/', $string, $int);
if(empty($int[1])) {
return $string;
}
foreach($int[1] as $k=>$v) {
$string = str_replace('&#'.$v.';', chr($v), $string);
}
return $string;
}
/*
* 一种加密
*/
public static function encrypt($string, $operation, $key='ovooa') {
$key=md5($key);
$key_length=strlen($key);
$string = $operation == 'D' ? str_replace(' ', '+', $string) : $string;
$string=$operation=='D'?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=='D') {
if(substr($result,0,8)==substr(md5(substr($result,8).$key),0,8)) {
return substr($result,8);
}else{
return 'key错误';
}
}else{
return str_replace('=','',base64_encode($result));
}
}
/*
* 去除空占位符
*/
public static function nate($String) {
return str_replace(Array("\r", "\n", "\r\n", ' '), '', (String) $String);
}
public static function is_Skey($Skey) {
if(strlen(str_replace(' ', '', $Skey)) == 10) {
return true;
}else{
return false;
}
}
/*
* 判断是否是pskey
*/
public static function is_Pskey($Pskey) {
if(strlen((String) $Pskey) == 44) {
//preg_match('/^.{38,46}$/', $Pskey)
return true;
}else{
return false;
}
}
/*
* 判断是否是手机号
*/
public static function is_phone($number) {
if(preg_match('/^1[1-9][0-9]{9,10}$/', $number))
{
return true;
}else{
return false;
}
}
/*
* 忘了
*/
public static function strtouni($str)
{
return preg_replace('/^"|"$/', '', Json_encode((string)$str));
}
/*
* 忘了
*/
public static function unitostr($uni)
{
return preg_replace_callback("#\\\u([0-9a-f]{4})#i", function ($r) {
return iconv('UCS-2BE', 'UTF-8', pack('H4', $r[1]));
},
$uni);
}
/*
* mb库的split
*/
public static function mb_split($string, $split_length = 1, $encoding = null)
{
if (null !== $string && !\is_scalar($string) && !(\is_object($string) && \method_exists($string, '__toString'))) {
trigger_error('mb_str_split(): expects parameter 1 to be string, '.\gettype($string).' given', E_USER_WARNING);
return null;
}
if (null !== $split_length && !\is_bool($split_length) && !\is_numeric($split_length)) {
trigger_error('mb_str_split(): expects parameter 2 to be int, '.\gettype($split_length).' given', E_USER_WARNING);
return null;
}
$split_length = (int) $split_length;
if (1 > $split_length) {
trigger_error('mb_str_split(): The length of each segment must be greater than zero', E_USER_WARNING);
return false;
}
if (null === $encoding) {
$encoding = mb_internal_encoding();
} else {
$encoding = (string) $encoding;
}
if (! in_array($encoding, mb_list_encodings(), true)) {
static $aliases;
if ($aliases === null) {
$aliases = [];
foreach (mb_list_encodings() as $encoding) {
$encoding_aliases = mb_encoding_aliases($encoding);
if ($encoding_aliases) {
foreach ($encoding_aliases as $alias) {
$aliases[] = $alias;
}
}
}
}
if (! in_array($encoding, $aliases, true)) {
trigger_error('mb_str_split(): Unknown encoding "'.$encoding.'"', E_USER_WARNING);
return null;
}
}
$result = [];
$length = mb_strlen($string, $encoding);
for ($i = 0; $i < $length; $i += $split_length) {
$result[] = mb_substr($string, $i, $split_length, $encoding);
}
return $result;
}
/*
* 删除过期文件
*/
public static function delfile($dir, $time)
{
if(is_dir($dir)) {
if($dh=opendir($dir)) {
while (false !== ($file = readdir($dh))) {
// $count = strstr($file,'duodu-')||strstr($file,'dduo-')||strstr($file,'duod-');
if($file!='.' && $file!='..') {
$fullpath=$dir.'/'.$file;
if(!is_dir($fullpath)) {
$filedate=filemtime($fullpath);
$minutes=round((time()-$filedate)/60);
if($minutes>$time) unlink($fullpath);
//删除文件
}
}
}
}
}
closedir($dh);
return true;
}
/*
* 阿拉伯数字转大写数字有bug
*/
public static function chinanum($num)
{
$char = array("","","","","","","","","","");
$dw = array("","","","","","亿","");
$retval = "";
$proZero = false;
for($i = 0;$i < strlen($num);$i++) {
if($i > 0)
{
$temp = (int)(($num % pow (10,$i+1)) / pow (10,$i));
}
else {
$temp = (int)($num % pow (10,1));
}
if($proZero == true && $temp == 0)
{
continue;
}
if($temp == 0)
{
$proZero = true;
} else {
$proZero = false;
}
if($proZero)
{
if($retval == "")
{
continue;
}
$retval = $char[$temp].$retval;
} else {
$retval = $char[$temp].$dw[$i].$retval;
}
}
if($retval == "一十")
{
$retval = "";
}
$retval = str_replace('一十','十',$retval);
return $retval;
}
/*
* 判断是否是邮箱
*/
public static function is_email($email)
{
$pattern_test = "/([a-z0-9]*[-_.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[.][a-z]{2,3}([.][a-z]{2})?/i";
return preg_match($pattern_test, $email);
}
/*
* 忘了
*/
public static function getRandomHex($length)
{
if (function_exists('random_bytes')) {
return bin2hex(random_bytes($length / 2));
}
if (function_exists('mcrypt_create_iv')) {
return bin2hex(mcrypt_create_iv($length / 2, MCRYPT_DEV_URANDOM));
}
if (function_exists('openssl_random_pseudo_bytes')) {
return bin2hex(openssl_random_pseudo_bytes($length / 2));
}
}
/*
* 转码,忘了转什么
*/
public static function bchexdec($hex)
{
$dec = 0;
$len = strlen($hex);
for ($i = 1; $i <= $len; $i++) {
$dec = bcadd($dec, bcmul(strval(hexdec($hex[$i - 1])), bcpow('16', strval($len - $i))));
}
return $dec;
}
/*
* 同上
*/
public static function bcdechex($dec)
{
$hex = '';
do {
$last = bcmod($dec, 16);
$hex = dechex($last).$hex;
$dec = bcdiv(bcsub($dec, $last), 16);
} while ($dec > 0);
return $hex;
}
/*
* str转16进制
*/
public static function str2hex($string)
{
$hex = '';
for ($i = 0; $i < strlen($string); $i++) {
$ord = ord($string[$i]);
$hexCode = dechex($ord);
$hex .= substr('0'.$hexCode, -2);
}
return $hex;
}
}