常用自定义函数
编码常用的一些函数如获取IP发送邮件curl封装加解密字符串对象转数组后面会有补充 无 //获取IPfunction ip(){if(getenv('X-Forwarded-For')strcasecmp(getenv('X-Forwarded-For'), 'unknown')){$ip = getenv('X-Forwarded-For');}elseif(getenv('HTTP_CLIENT_
编码常用的一些函数 如获取IP 发送邮件 curl封装 加解密字符串 对象转数组 后面会有补充
//获取IP function ip() { if(getenv('X-Forwarded-For')&&strcasecmp(getenv('X-Forwarded-For'), 'unknown')) { $ip = getenv('X-Forwarded-For'); } elseif(getenv('HTTP_CLIENT_IP')&&strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) { $ip = getenv('HTTP_CLIENT_IP'); } elseif(getenv('HTTP_X_FORWARDED_FOR')&&strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) { $ip = getenv('HTTP_X_FORWARDED_FOR'); } elseif(getenv('REMOTE_ADDR')&&strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) { $ip = getenv('REMOTE_ADDR'); } elseif(isset($_SERVER['REMOTE_ADDR'])&&$_SERVER['REMOTE_ADDR']&&strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) { $ip = $_SERVER['REMOTE_ADDR']; } return preg_match("/[\d\.]{7,15}/", $ip, $matches) ? $matches[0] : 'unknown'; } //curl封装 function curl($url, $method = 'GET', $postFields = null, $header = null) { $ch = curl_init(); curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0); curl_setopt($ch, CURLOPT_FAILONERROR, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_TIMEOUT, 5); if (strlen($url) > 5 && strtolower(substr($url, 0, 5)) == "https") { curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); } switch ($method) { case 'POST': curl_setopt($ch, CURLOPT_POST, true); if (!empty($postFields)) { if (is_array($postFields) || is_object($postFields)) { if (is_object($postFields)) $postFields = Bin_Tools::object2array($postFields); $postBodyString = ""; $postMultipart = false; foreach ($postFields as $k => $v) { if ("@" != substr($v, 0, 1)) { //判断是不是文件上传 $postBodyString .= "$k=" . urlencode($v) . "&"; } else { //文件上传用multipart/form-data,否则用www-form-urlencoded $postMultipart = true; } } unset($k, $v); if ($postMultipart) { curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields); } else { curl_setopt($ch, CURLOPT_POSTFIELDS, substr($postBodyString, 0, -1)); } } else { curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields); } } break; default: if (!empty($postFields) && is_array($postFields)) $url .= (strpos($url, '?') === false ? '?' : '&') . http_build_query($postFields); break; } curl_setopt($ch, CURLOPT_URL, $url); if (!empty($header) && is_array($header)) { curl_setopt($ch, CURLOPT_HTTPHEADER, $header); } $response = curl_exec($ch); if (curl_errno($ch)) { throw new Exception(curl_error($ch), 0); } curl_close($ch); return $response; } //对象转数组 function object_to_array($obj) { $_arr = is_object($obj) ? get_object_vars($obj) : $obj; foreach ($_arr as $key => $val) { $val = (is_array($val) || is_object($val)) ? object_to_array($val) : $val; $arr[$key] = $val; } return $arr; } //发送邮件 基于phpmailer function sendmail($to, $title, $content) { $mail = new lib_phpmail_phpmail(); $mail->CharSet ="UTF-8"; $mail->IsSMTP(); $mail->SMTPAuth = true; $mail->SMTPSecure = "ssl"; $mail->Host = "11.111.11.11:465"; $mail->Port = 25; $mail->Username = "aaa@aaa.com"; $mail->Password = "123abc"; $mail->SetFrom('aaa@aaa.com', 'info'); $mail->AddAddress($to); $mail->IsHTML(true); $mail->Subject = $title; $mail->Body = $content; return $mail->Send(); } //加密字符串 function encrypt($encrypt,$key="key") { $iv = mcrypt_create_iv ( mcrypt_get_iv_size ( MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB ), MCRYPT_RAND ); $passcrypt = mcrypt_encrypt ( MCRYPT_RIJNDAEL_256, $key, $encrypt, MCRYPT_MODE_ECB, $iv ); $encode = base64_encode ( $passcrypt ); return $encode; } //解密字符串 function decrypt($decrypt,$key="key") { $decoded = base64_decode ( $decrypt ); $iv = mcrypt_create_iv ( mcrypt_get_iv_size ( MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB ), MCRYPT_RAND ); $decrypted = mcrypt_decrypt ( MCRYPT_RIJNDAEL_256, $key, $decoded, MCRYPT_MODE_ECB, $iv ); return $decrypted; } //分页 function getPage($count, $pageNum, $pagesize, $linksize = 10) { if($count == 0) return ''; $totalPage = ceil($count/$pagesize); $p = 'page'; $request_url = $_SERVER['REQUEST_URI']; if(strpos($request_url,'?')) { $url = $request_url; } else { $url = $request_url.'?'; } $parse = parse_url($url); if(isset($parse['query'])) { parse_str($parse['query'],$params); unset($params[$p]); $url = $parse['path'].'?'.http_build_query($params); } //首页 尾页 if($pageNum > 1) { $firstPage = '<li><a href=\''.$url.'&'.$p.'=1\'>首页 </a></li>'; } if($pageNum < $totalPage) { $endPage = '<li><a href=\''.$url.'&'.$p.'='.$totalPage.'\'> 尾页</a></li>'; } //上一页 下一页 $upRow = $pageNum - 1; $downRow = $pageNum + 1; $upPage = $downPage = ''; if ($upRow > 0) { $upPage='<li><a href=\''.$url.'&'.$p.'='.$upRow.'\'>上一页</a></li>'; } if ($downRow <= $totalPage) { $downPage='<li><a href=\''.$url.'&'.$p.'='.$downRow.'\'>下一页</a></li>'; } //计算起始、结束页码 $start = max(1, $pageNum - intval($linksize/2)); $end = min($start + $linksize - 1, $totalPage); $start = max(1, $end - $linksize + 1); $pageStr = ''; for($i = $start; $i <= $end; $i++) { if($i == $pageNum) { $pageStr .= '<li> '.$i.' </li>'; } else { $pageStr .= '<li><a href=\''.$url.'&'.$p.'='.$i.'\'> '.$i.' </a></li>'; } } $pageStr = $firstPage . $upPage . $pageStr . $downPage . $endPage; $pageStr .= '<li> 共'.$totalPage.'页'; return $pageStr; } //编码转汉字 public function entities2utf8($unicode_c){ $unicode_c = preg_replace_callback("/\&\#(.+?)\;/", function($unicode_str){ $unicode_c_val = hexdec($unicode_str[1]); $f=0x80; // 10000000 $str = ""; // U-00000000 - U-0000007F: 0xxxxxxx if($unicode_c_val <= 0x7F) { $str = chr($unicode_c_val); } //U-00000080 - U-000007FF: 110xxxxx 10xxxxxx else if($unicode_c_val >= 0x80 && $unicode_c_val <= 0x7FF) { $h=0xC0; // 11000000 $c1 = $unicode_c_val >> 6 | $h; $c2 = ($unicode_c_val & 0x3F) | $f; $str = chr($c1).chr($c2); } //U-00000800 - U-0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx else if($unicode_c_val >= 0x800 && $unicode_c_val <= 0xFFFF) { $h=0xE0; // 11100000 $c1 = $unicode_c_val >> 12 | $h; $c2 = (($unicode_c_val & 0xFC0) >> 6) | $f; $c3 = ($unicode_c_val & 0x3F) | $f; $str=chr($c1).chr($c2).chr($c3); } //U-00010000 - U-001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx else if($unicode_c_val >= 0x10000 && $unicode_c_val <= 0x1FFFFF) { $h=0xF0; // 11110000 $c1 = $unicode_c_val >> 18 | $h; $c2 = (($unicode_c_val & 0x3F000) >>12) | $f; $c3 = (($unicode_c_val & 0xFC0) >>6) | $f; $c4 = ($unicode_c_val & 0x3F) | $f; $str = chr($c1).chr($c2).chr($c3).chr($c4); } //U-00200000 - U-03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx else if($unicode_c_val >= 0x200000 && $unicode_c_val <= 0x3FFFFFF) { $h=0xF8; // 11111000 $c1 = $unicode_c_val >> 24 | $h; $c2 = (($unicode_c_val & 0xFC0000)>>18) | $f; $c3 = (($unicode_c_val & 0x3F000) >>12) | $f; $c4 = (($unicode_c_val & 0xFC0) >>6) | $f; $c5 = ($unicode_c_val & 0x3F) | $f; $str = chr($c1).chr($c2).chr($c3).chr($c4).chr($c5); } //U-04000000 - U-7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx else if($unicode_c_val >= 0x4000000 && $unicode_c_val <= 0x7FFFFFFF) { $h=0xFC; // 11111100 $c1 = $unicode_c_val >> 30 | $h; $c2 = (($unicode_c_val & 0x3F000000)>>24) | $f; $c3 = (($unicode_c_val & 0xFC0000)>>18) | $f; $c4 = (($unicode_c_val & 0x3F000) >>12) | $f; $c5 = (($unicode_c_val & 0xFC0) >>6) | $f; $c6 = ($unicode_c_val & 0x3F) | $f; $str = chr($c1).chr($c2).chr($c3).chr($c4).chr($c5).chr($c6); } return $str; }, $unicode_c); return $unicode_c; }

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Conseils pour créer dynamiquement de nouvelles fonctions dans les fonctions Golang

Considérations relatives à l'ordre des paramètres dans la dénomination des fonctions C++

Comment écrire des fonctions efficaces et maintenables en Java ?

Comparaison des avantages et des inconvénients des paramètres par défaut et des paramètres variables des fonctions C++

Collection complète de formules de fonctions Excel

Quels sont les avantages des fonctions C++ renvoyant des types référence ?

Quelle est la différence entre les fonctions PHP personnalisées et les fonctions prédéfinies ?

Utilisation avancée des paramètres de référence et des paramètres de pointeur dans les fonctions C++
