php : 常用函數

常用函數:

<?php
/*** 獲取客戶端IP* @return [string] [description]*/
function getClientIp() {$ip = NULL;if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {$arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);$pos = array_search('unknown',$arr);if(false !== $pos) unset($arr[$pos]);$ip = trim($arr[0]);}elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {$ip = $_SERVER['HTTP_CLIENT_IP'];}elseif (isset($_SERVER['REMOTE_ADDR'])) {$ip = $_SERVER['REMOTE_ADDR'];}// IP地址合法驗證$ip = (false !== ip2long($ip)) ? $ip : '0.0.0.0';return $ip;
}/*** 獲取在線IP* @return String*/
function getOnlineIp($format=0) {global $S_GLOBAL;if(empty($S_GLOBAL['onlineip'])) {if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {$onlineip = getenv('HTTP_CLIENT_IP');} elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {$onlineip = getenv('HTTP_X_FORWARDED_FOR');} elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {$onlineip = getenv('REMOTE_ADDR');} elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {$onlineip = $_SERVER['REMOTE_ADDR'];}preg_match("/[\d\.]{7,15}/", $onlineip, $onlineipmatches);$S_GLOBAL['onlineip'] = $onlineipmatches[0] ? $onlineipmatches[0] : 'unknown';}if($format) {$ips = explode('.', $S_GLOBAL['onlineip']);for($i=0;$i<3;$i++) {$ips[$i] = intval($ips[$i]);}return sprintf('%03d%03d%03d', $ips[0], $ips[1], $ips[2]);} else {return $S_GLOBAL['onlineip'];}
}/*** 獲取url* @return [type] [description]*/
function getUrl(){$pageURL = 'http';if (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on") {$pageURL .= "s";}$pageURL .= "://";if ($_SERVER["SERVER_PORT"] != "80") {$pageURL .= $_SERVER["HTTP_HOST"] . ":" . $_SERVER["SERVER_PORT"] . $_SERVER["REQUEST_URI"];} else {$pageURL .= $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];}return $pageURL;
}/*** 獲取當前站點的訪問路徑根目錄* @return [type] [description]*/
function getSiteUrl() {$uri = $_SERVER['REQUEST_URI']?$_SERVER['REQUEST_URI']:($_SERVER['PHP_SELF']?$_SERVER['PHP_SELF']:$_SERVER['SCRIPT_NAME']);return 'http://'.$_SERVER['HTTP_HOST'].substr($uri, 0, strrpos($uri, '/')+1);
}/*** 字符串截取,支持中文和其他編碼* @param [string] $str  [字符串]* @param integer $start [起始位置]* @param integer $length [截取長度]* @param string $charset [字符串編碼]* @param boolean $suffix [是否有省略號]* @return [type]   [description]*/
function msubstr($str, $start=0, $length=15, $charset="utf-8", $suffix=true) {if(function_exists("mb_substr")) {return mb_substr($str, $start, $length, $charset);} elseif(function_exists('iconv_substr')) {return iconv_substr($str,$start,$length,$charset);}$re['utf-8'] = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";$re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";$re['gbk'] = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";$re['big5'] = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";preg_match_all($re[$charset], $str, $match);$slice = join("",array_slice($match[0], $start, $length));if($suffix) {return $slice."…";}return $slice;
}/*** php 實現js escape 函數* @param [type] $string [description]* @param string $encoding [description]* @return [type]   [description]*/
function escape($string, $encoding = 'UTF-8'){$return = null;for ($x = 0; $x < mb_strlen($string, $encoding);$x ++){$str = mb_substr($string, $x, 1, $encoding);if (strlen($str) > 1) { // 多字節字符$return .= "%u" . strtoupper(bin2hex(mb_convert_encoding($str, 'UCS-2', $encoding)));} else {$return .= "%" . strtoupper(bin2hex($str));}}return $return;
}
/*** php 實現 js unescape函數* @param [type] $str [description]* @return [type]  [description]*/
function unescape($str) {$str = rawurldecode($str);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//IGNORE",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) == "&#") {echo substr($v,2,-1)."";$ar[$k] = iconv("UCS-2","utf-8",pack("n",substr($v,2,-1)));}}return join("",$ar);
}/*** 數字轉人名幣* @param [type] $num [description]* @return [type]  [description]*/
function num2rmb ($num) {$c1 = "零壹貳叁肆伍陸柒捌玖";$c2 = "分角元拾佰仟萬拾佰仟億";$num = round($num, 2);$num = $num * 100;if (strlen($num) > 10) {return "oh,sorry,the number is too long!";}$i = 0;$c = "";while (1) {if ($i == 0) {$n = substr($num, strlen($num)-1, 1);} else {$n = $num % 10;}$p1 = substr($c1, 3 * $n, 3);$p2 = substr($c2, 3 * $i, 3);if ($n != '0' || ($n == '0' && ($p2 == '億' || $p2 == '萬' || $p2 == '元'))) {$c = $p1 . $p2 . $c;} else {$c = $p1 . $c;}$i = $i + 1;$num = $num / 10;$num = (int)$num;if ($num == 0) {break;}}$j = 0;$slen = strlen($c);while ($j < $slen) {$m = substr($c, $j, 6);if ($m == '零元' || $m == '零萬' || $m == '零億' || $m == '零零') {$left = substr($c, 0, $j);$right = substr($c, $j + 3);$c = $left . $right;$j = $j-3;$slen = $slen-3;}$j = $j + 3;}if (substr($c, strlen($c)-3, 3) == '零') {$c = substr($c, 0, strlen($c)-3);} // if there is a '0' on the end , chop it outreturn $c . "整";
}/*** 特殊的字符* @param [type] $str [description]* @return [type]  [description]*/
function makeSemiangle($str) {$arr = array('0' => '0', '1' => '1', '2' => '2', '3' => '3', '4' => '4','5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9','A' => 'A', 'B' => 'B', 'C' => 'C', 'D' => 'D', 'E' => 'E','F' => 'F', 'G' => 'G', 'H' => 'H', 'I' => 'I', 'J' => 'J','K' => 'K', 'L' => 'L', 'M' => 'M', 'N' => 'N', 'O' => 'O','P' => 'P', 'Q' => 'Q', 'R' => 'R', 'S' => 'S', 'T' => 'T','U' => 'U', 'V' => 'V', 'W' => 'W', 'X' => 'X', 'Y' => 'Y','Z' => 'Z', 'a' => 'a', 'b' => 'b', 'c' => 'c', 'd' => 'd','e' => 'e', 'f' => 'f', 'g' => 'g', 'h' => 'h', 'i' => 'i','j' => 'j', 'k' => 'k', 'l' => 'l', 'm' => 'm', 'n' => 'n','o' => 'o', 'p' => 'p', 'q' => 'q', 'r' => 'r', 's' => 's','t' => 't', 'u' => 'u', 'v' => 'v', 'w' => 'w', 'x' => 'x','y' => 'y', 'z' => 'z','(' => '(', ')' => ')', '〔' => '[', '〕' => ']', '【' => '[','】' => ']', '〖' => '[', '〗' => ']', '{' => '{', '}' => '}', '《' => '<','》' => '>','%' => '%', '+' => '+', '—' => '-', '-' => '-', '~' => '-',':' => ':', '。' => '.', '、' => ',', ',' => '.', '、' => '.',';' => ';', '?' => '?', '!' => '!', '…' => '-', '‖' => '|','”' => '"', '“' => '"', ''' => '`', '‘' => '`', '|' => '|', '〃' => '"',' ' => ' ','.' => '.');return strtr($str, $arr);
}/*** 下載* @param [type] $filename [description]* @param string $dir  [description]* @return [type]   [description]*/
function downloads($filename,$dir='./'){$filepath = $dir.$filename;if (!file_exists($filepath)){header("Content-type: text/html; charset=utf-8");echo "File not found!";exit;} else {$file = fopen($filepath,"r");Header("Content-type: application/octet-stream");Header("Accept-Ranges: bytes");Header("Accept-Length: ".filesize($filepath));Header("Content-Disposition: attachment; filename=".$filename);echo fread($file, filesize($filepath));fclose($file);}
}/*** 創建一個目錄樹* @param [type] $dir [description]* @param integer $mode [description]* @return [type]  [description]*/
function mkdirs($dir, $mode = 0777) {if (!is_dir($dir)) {mkdirs(dirname($dir), $mode);return mkdir($dir, $mode);}return true;
}

?

---------》》》》

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/542024.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/542024.shtml
英文地址,請注明出處:http://en.pswp.cn/news/542024.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java日歷類add方法_Java日歷setFirstDayOfWeek()方法與示例

java日歷類add方法日歷類setFirstDayOfWeek()方法 (Calendar Class setFirstDayOfWeek() method) setFirstDayOfWeek() method is available in java.util package. setFirstDayOfWeek()方法在java.util包中可用。 setFirstDayOfWeek() method is used to sets the first day o…

zabbix監控部署 與添加主機

zabbix介紹&#xff1a; zabbix&#xff08;[zbiks]&#xff09;是一個基于WEB界面的提供分布式系統監視以及網絡監視功能的企業級的開源解決方案。zabbix能監視各種網絡參數&#xff0c;保證服務器系統的安全運營&#xff1b;并提供靈活的通知機制以讓系統管理員快速定位/解決…

線段樹 洛谷 p1531 I hate it(I hate it too)

這里寫鏈接內容 線段樹模板 字符串是一個很詭異的問題。。。。 #include<cstdio> #include<iostream> #include<string> #define q 200000 using namespace std; int a[q5],s[q<<25]; void bu(int o,int l,int r)//建樹 {if(lr){s[o]a[r];} else{int…

打開是什么樣子的圖片_情侶頭像 | 無論是什么樣子的你 我都好喜歡

點擊【情侶圖片大全】- 右上角找到【…】立刻設我為星標/置頂 - 不迷路哦情侶圖片大全“時光真瘋狂&#xff0c;我一路執迷與匆忙”情侶/閨蜜/動漫/閨蜜網名長按圖片保存 點擊圖片放大圖片高清&#xff0c;建議在 W i f i 下瀏覽這個世界是多么神奇我竟然遇見了你無論是什么…

Java File類File [] listFiles()方法(帶示例)

File類File [] listFiles() (File Class File[] listFiles()) This method is available in package java.io.File.listFiles(). 軟件包java.io.File.listFiles()中提供了此方法。 This method is used to return the names of all the files in the form of an array of files…

zabbix監控平臺添加服務(http,nginx,mysql)

1 . 監控httpd服務&#xff1a; 首先確保已經搭建zabbix監控平臺&#xff0c;并且將需要監控的主機已經添加。 對主機server2 上的http服務進行監控&#xff0c;首先確保server2主機安裝了http服務。 使用http在zabbix中自帶監控模版 點擊配置->主機->server2->模…

java為什么要重寫hashCode和equals方法

如果不被重寫&#xff08;原生&#xff09;的hashCode和equals是什么樣的&#xff1f;不被重寫&#xff08;原生&#xff09;的hashCode值是根據內存地址換算出來的一個值。 不被重寫&#xff08;原生&#xff09;的equals方法是嚴格判斷一個對象是否相等的方法&#xff0…

stl中map函數_map :: max_size()函數,以及C ++ STL中的Example

stl中map函數C STL映射:: max_size() (C STL map::max_size() ) It returns the maximum number of elements the container(map) is able to hold but at runtime, the size of the container may be limited to a value smaller than specified by max_size() by the amount…

arduino 藍牙示例_Arduino簡單實例之八_藍牙模塊

1) 說明&#xff1a;藍牙模塊用于和手機或其它帶藍牙的設備通訊。藍牙設備分為主從兩種模式&#xff0c;作為主設備時&#xff0c;它查找和連接其它設備&#xff1b;作為從設備時只能被只它設備連接&#xff1b;通訊模式分透明傳輸和AT命令模式。最好購買主從一體的藍牙模…

zabbix使用JMX監控tomcat

JMX 全稱是Java Management Extensions,即Java管理擴展。Java程序會開放一些端口&#xff0c;用來獲取運行狀況。 從Zabbix2.0開始&#xff0c;內置了監控JMX的功能,叫做"Zabbix Java Gateway ",在Zabbix Serve上會啟動名為"Zabbix Java Gateway "的進程&…

自定義控件添加屬性_|AutoCAD LT 2019 Mac自定義功能區的方法

AutoCAD LT是一款非常好用的CAD三維設計繪圖軟件&#xff0c;最新版本2019擁有改進的桌面、新應用實現跨設備工作流&#xff0c;以及DWG比較等新功能&#xff0c;并且AutoCAD LT 2019 Mac可以根據你的需要和工作習慣來自定義功能區&#xff0c;下面為大家帶來自定義功能區的詳細…

操作系統中的文件系統和訪問方法

文件 (File) A file is basically a sequence of bytes organized into blocks that are understandable by any machines. In other words, the collection of related information that is stored in a secondary storage device is also called a file. The file is a colle…

centos7鏡像加速_docker 鏡像加速CentOS7詳細介紹

前言在Docker Hub官網上注冊帳號&#xff0c;即可下載使用倉庫里的全部的docker鏡像。而因為網絡原因&#xff0c;國內的開發者沒辦法流暢的下載鏡像&#xff0c;經常會出現下載中斷的錯誤。解決方法就是使用國內的容器Hub加速服務&#xff0c;本質就是更改pull優先級較高的服務…

java 根據類名示例化類_Java LocalDateTime類| atOffset()方法與示例

java 根據類名示例化類LocalDateTime類atOffset()方法 (LocalDateTime Class atOffset() method) atOffset() method is available in java.time package. atOffset()方法在java.time包中可用。 atOffset() method is used to create an OffsetDateTime to merge this LocalDat…

Zabbix監控——proxy 分布式監控配置

proxy分布式監控 Zabbix proxy是在大規模分布式監控場景中&#xff0c;采用的一種用以分擔server端壓力的分層結構&#xff0c; proxy可以代替zabbix server檢索客戶端的數據&#xff0c;然后把數據匯報給zabbix server&#xff0c;極大的減輕了server的負載壓力&#xff0c;使…

AutoCAD_acadiso.dwt卡死

2019獨角獸企業重金招聘Python工程師標準>>> 問題描述&#xff1a;每次執行到打開acadiso.dwt就卡死&#xff0c;且電腦顯示有網&#xff0c;確打不開網頁 可能原因&#xff1a;可能是因為AotuCAD是盜版的 解決辦法&#xff1a; 1.在任務管理器中把WSCommCntr.exe進…

else 策略模式去掉if_java – 用狀態/策略模式替換if/else邏輯

我認為你應該使用GoF模式Chain of responsibility.你應該引入兩個接口&#xff1a;1)你將檢查正確條件的條件,例如“如果zip文件不存在”并返回布爾結果 – 如果條件滿足則返回“true”,否則“else”,2)執行策略,它將運行分配有條件的動作,例如&#xff1a; “從指定的URL下載它…

docker簡介與搭建

1 . 對docker的理解&#xff1a; Docker 是一個開源的應用容器引擎&#xff0c;讓開發者可以打包他們的應用以及依賴包到一個可移植的鏡像中&#xff0c;然后發布到任何流行的 Linux或Windows 機器上&#xff0c;也可以實現虛擬化。容器是完全使用沙箱機制&#xff0c;相互之間…

Java BigInteger類| toByteArray()方法與示例

BigInteger類testBit()方法 (BigInteger Class testBit() method) testBit() method is available in java.math package. testBit()方法在java.math包中可用。 testBit() method is used to convert this BigInteger to a byte [] that holds 2s complement denotation of thi…

007_Web to lead

轉載于:https://www.cnblogs.com/bandariFang/p/6229491.html