第一篇:PHP的構(gòu)造函數(shù)-php教程
PHP的構(gòu)造函數(shù)
本php教程主要學(xué)習(xí)PHP的構(gòu)造函數(shù)。
在面向?qū)ο缶幊讨杏袀€很特別的函數(shù),這個函數(shù)稱為構(gòu)造函數(shù),是對象被創(chuàng)建時自動調(diào)用的方法,用來完成類初始化的工作。因為只要PHP的類一加載就會自動執(zhí)行此函數(shù),一般初始化的工作都放在此函數(shù)中。
1.構(gòu)造函數(shù)和其它函數(shù)一樣,可以傳遞參數(shù),可以設(shè)定參數(shù)默認值。
2.構(gòu)造函數(shù)可以調(diào)用屬性,可以調(diào)用方法。
3.構(gòu)造函數(shù)可以被其它方法顯式調(diào)用。
在之前的PHP版本中,構(gòu)造函數(shù)使用和類名同名來進行對象的初始化工作,但后面發(fā)現(xiàn)如果要更改類名,同時就要更改它的構(gòu)造方法,所以在PHP5中,就被用__construct()函數(shù)來實現(xiàn).__construct()前面是兩個下劃線組成,不要以為是一個下劃線.與構(gòu)造函數(shù)相對應(yīng)的是析構(gòu)函數(shù).當某個對象成為垃圾或者當對象被顯式銷毀時執(zhí)行。__destruct()析構(gòu)函數(shù),是在垃圾對象被回收時執(zhí)行。
1.不要在程序中調(diào)用一個對象的析構(gòu)函數(shù)。
2.析構(gòu)函數(shù)不能帶有參數(shù)。
3.通常在程序結(jié)束后PHP會自動執(zhí)行垃圾回收。
在這里有個問題先提下,因為我們創(chuàng)建一個類,有時候會有多個實例,那么構(gòu)造函數(shù)是怎么進行調(diào)用的呢。php的構(gòu)造函數(shù)調(diào)用是從自身向上查找,執(zhí)行最近的一個來進行調(diào)用。
關(guān)于這個構(gòu)造函數(shù)在以后再進行補充吧,它的基本知識點就這些吧,相信在遇到__construct()等莫名的函數(shù)而不知所措了。至于它的實際應(yīng)用到時候再說吧,今天就不舉例了,好不容易今天不要上班,難得呀。
第二篇:php開發(fā)中常用函數(shù)總結(jié)
php開發(fā)中常用函數(shù)總結(jié)
1.獲取IP2.時間的增加3.檢查日期是否合法日期4.時間比較函數(shù),返回兩個日期相差幾秒、幾分鐘、幾小時或幾天5.PHP重定向6.獲取訪問者瀏覽器7.獲取訪問者操作系統(tǒng)8.文件格式類9.php生成excel文檔10.時間比較問題11.提取頁面和瀏覽器提交的變量,作用相當于使PHP.INI開了全局變量12.讀取文件函數(shù)13.寫入文件函數(shù)14.頁面快速轉(zhuǎn)向15.產(chǎn)生隨機字符串函數(shù)16.截取一定長度的字符串(該函數(shù)對GB2312使用有效)17.取得客戶端IP地址18.判斷郵箱地址19.分頁(兩個函數(shù)配合使用)20.獲取新插入數(shù)據(jù)的ID21.獲得當前的腳本網(wǎng)址22.把全角數(shù)字轉(zhuǎn)為半角數(shù)字23.去除HTML標記24.相對路徑轉(zhuǎn)化成絕對路徑26.取得所有鏈接27.HTML表格的每行轉(zhuǎn)為CSV格式數(shù)組28.將HTML表格的每行每列轉(zhuǎn)為數(shù)組,采集表格數(shù)據(jù)29.返回字符串中的所有單詞 $distinct=true 去除重復(fù)30.打印出為本PHP項目做出貢獻的人員的清單
function GetIP(){ //獲取IP
if($_SERVER[“HTTP_X_FORWARDED_FOR”])
$ip = $_SERVER[“HTTP_X_FORWARDED_FOR”];
else if($_SERVER[“HTTP_CLIENT_IP”])
$ip = $_SERVER[“HTTP_CLIENT_IP”];
else if($_SERVER[“REMOTE_ADDR”])
$ip = $_SERVER[“REMOTE_ADDR”];
else if(getenv(“HTTP_X_FORWARDED_FOR”))
$ip = getenv(“HTTP_X_FORWARDED_FOR”);
else if(getenv(“HTTP_CLIENT_IP”))
$ip = getenv(“HTTP_CLIENT_IP”);
else if(getenv(“REMOTE_ADDR”))
$ip = getenv(“REMOTE_ADDR”);
else
$ip = “Unknown”;
return $ip;}?>{downsource}
$dateArr = explode(“-”, $date);$value[$unit] = $int;return date(“Y-m-d”, mktime(0,0,0, $dateArr[1] + $value['m'], $dateArr[2] + $value['d'], $dateArr[0] + $value['y']));}function GetWeekDay($date){ //計算出給出的日期是星期幾
$dateArr = explode(“-”, $date);return date(“w”, mktime(0,0,0,$dateArr[1],$dateArr[2],$dateArr[0]));}?>{downsource}
$dateArr = explode(“-”, $date);if(is_numeric($dateArr[0])&& is_numeric($dateArr[1])&& is_numeric($dateArr[2])){ return checkdate($dateArr[1],$dateArr[2],$dateArr[0]);} return false;}function check_time($time){ //檢查時間是否合法時間
$timeArr = explode(“:”, $time);if(is_numeric($timeArr[0])&& is_numeric($timeArr[1])&& is_numeric($timeArr[2])){ if(($timeArr[0] >= 0 && $timeArr[0] <= 23)&&($timeArr[1] >= 0 && $timeArr[1] <= 59)&&($timeArr[2] >= 0 && $timeArr[2] <= 59))return true;else return false;} return false;}function DateDiff($date1, $date2, $unit = “"){ //時間比較函數(shù),返回兩個日期相差幾秒、幾分鐘、幾小時或幾天
switch($unit){ case 's': $dividend = 1;break;case 'i': $dividend = 60;break;case 'h': $dividend = 3600;break;case 'd': $dividend = 86400;break;default: $dividend = 86400;} $time1 = strtotime($date1);$time2 = strtotime($date2);if($time1 && $time2)return(float)($time11;mt_srand((double)microtime()* 1000000);for($i = 0;$i < $length;$i++){ $hash.= $chars[mt_rand(0, $max)];}return $hash;}?>{downsource}截取一定長度的字符串(該函數(shù)對GB2312使用有效) $length){ if($sss){ $length=$length-3;$addstr=@#...@#;} for($i = 0;$i < $length;$i++){ if(ord($string[$i])> 127){ $wordscut.= $string[$i].$string[$i + 1];$i++;} else { $wordscut.= $string[$i];} } return $wordscut.$addstr;}return $string;}?>{downsource}取得客戶端IP地址{downsource}判斷郵箱地址{downsource}分頁(兩個函數(shù)配合使用)
global $page,$totalpage;$out=”共“.$totalpage.”頁 “;$linkNum =4;$start =($page-round($linkNum/2))>0 ?($page-round($linkNum/2)): ”1“;$end =($page+round($linkNum/2))<$totalpage ?($page+round($linkNum/2)): $totalpage;$prestart=$start-1;$nextend=$end+1;if($page<>1)$out.= ”第一頁 “;if($start>1)$out.=”..<< “;for($t=$start;$t<=$end;$t++){ $out.=($page==$t)? ”[“.$t.”] “ : ”$t “;}if($end<$totalpage)$out.=”>>..“;if($page<>$totalpage)$out.= ” 最后頁“;return $out;}?>{downsource}獲取新插入數(shù)據(jù)的ID{downsource}//獲得當前的腳本網(wǎng)址
if(empty($_SERVER[”QUERY_STRING“]))$nowurl = $scriptName;else $nowurl = $scriptName.”?“.$_SERVER[”QUERY_STRING“];} return $nowurl;}?>{downsource}//把全角數(shù)字轉(zhuǎn)為半角數(shù)字{downsource}//去除HTML標記“,”>“,$txt);$txt = preg_replace(”/[rn]{1,}/isU“,”rn“,$txt);return $txt;}?>{downsource}//相對路徑轉(zhuǎn)化成絕對路徑
preg_match('/(http|https|ftp):///', $feed_url, $protocol);$server_url = preg_replace(”/(http|https|ftp|news):///“, ”“, $feed_url);
$server_url = preg_replace(”//.*/“, ”“, $server_url);
if($server_url == ''){
return $content;
}
if(isset($protocol[0])){
$new_content = preg_replace('/href=”//', 'href=“'.$protocol[0].$server_url.'/', $content);
$new_content = preg_replace('/src=”//', 'src=“'.$protocol[0].$server_url.'/', $new_content);
} else {
$new_content = $content;
}
return $new_content;} ?>{downsource}//取得所有鏈接
preg_match_all('/
return array('name'=>$arr[2],'url'=>$arr[1]);}?>{downsource}//HTML表格的每行轉(zhuǎn)為CSV格式數(shù)組]*?>'si”,'“',$table);$table = str_replace(”“,'”,',$table);$table = str_replace(“”,“{tr}”,$table);//去掉 HTML 標記
$table = preg_replace(“'<[/!]*?[^<>]*?>'si”,“",$table);//去掉空白字符
$table = preg_replace(”'([rn])[s]+'“,”“,$table);$table = str_replace(” “,”“,$table);$table = str_replace(” “,”“,$table);$table = explode(”,{tr}“,$table);
array_pop($table);return $table;}?>{downsource}//將HTML表格的每行每列轉(zhuǎn)為數(shù)組,采集表格數(shù)據(jù)]*?>'si“,”“,$table);$table = preg_replace(”'
$table = preg_replace(”'<[/!]*?[^<>]*?>'si“,”“,$table);//去掉空白字符
$table = preg_replace(”'([rn])[s]+'“,”“,$table);$table = str_replace(” “,”“,$table);$table = str_replace(” “,”“,$table);
$table = explode('{tr}', $table);
array_pop($table);foreach($table as $key=>$tr){ $td = explode('{td}', $tr);array_pop($td);$td_array[] = $td;} return $td_array;}?>{downsource}//返回字符串中的所有單詞 $distinct=true 去除重復(fù){downsource}//打印出為本PHP項目做出貢獻的人員的清單 //生成隨機密碼function randStr($len=6){//用來產(chǎn)生密碼的字符串$chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789';$password=”";while(strlen($password)<$len)
$password.=substr($chars,(mt_rand()%strlen($chars)),1);return $password;
}
第三篇:不得不防的PHP危險函數(shù)
不得不防的PHP危險函數(shù)
用PHP語言建設(shè)網(wǎng)站,安全問題是每個PHP程序員必須考慮的問題,在PHP運用的過程中一些PHP危險函數(shù)卻不得不防,南京PHP培訓(xùn)小編把PHP危險函數(shù)列出來,供大家參考。
phpinfo()功能描述:輸出 PHP 環(huán)境信息以及相關(guān)的模塊、WEB 環(huán)境等信息。危險等級:中 passthru()功能描述:允許執(zhí)行一個外部程序并回顯輸出,類似于 exec()。危險等級:高 exec()功能描述:允許執(zhí)行一個外部程序(如 UNIX Shell 或 CMD 命令等)。危險等級:高 system()功能描述:允許執(zhí)行一個外部程序并回顯輸出,類似于 passthru()。危險等級:高 chroot()功能描述:可改變當前 PHP 進程的工作根目錄,僅當系統(tǒng)支持 CLI 模式 PHP 時才能工作,且該函數(shù)不適用于 Windows 系統(tǒng)。危險等級:高 scandir()功能描述:列出指定路徑中的文件和目錄。危險等級:中 chgrp()功能描述:改變文件或目錄所屬的用戶組。危險等級:高 chown()功能描述:改變文件或目錄的所有者。危險等級:高 shell_exec()功能描述:通過 Shell 執(zhí)行命令,并將執(zhí)行結(jié)果作為字符串返回。危險等級:高 proc_open()功能描述:執(zhí)行一個命令并打開文件指針用于讀取以及寫入。危險等級:高 proc_get_status()功能描述:獲取使用 proc_open()所打開進程的信息。危險等級:高 error_log()功能描述:將錯誤信息發(fā)送到指定位置(文件)。
安全備注:在某些版本的 PHP 中,可使用 error_log()繞過 PHP safe mode,執(zhí)行任意命令。危險等級:低 ini_alter()功能描述:是 ini_set()函數(shù)的一個別名函數(shù),功能與 ini_set()相同。具體參見 ini_set()。危險等級:高 ini_set()功能描述:可用于修改、設(shè)置 PHP 環(huán)境配置參數(shù)。危險等級:高 ini_restore()功能描述:可用于恢復(fù) PHP 環(huán)境配置參數(shù)到其初始值。危險等級:高 dl()功能描述:在 PHP 進行運行過程當中(而非啟動時)加載一個 PHP 外部模塊。危險等級:高 pfsockopen()功能描述:建立一個 Internet 或 UNIX 域的 socket 持久連接。危險等級:高 syslog()功能描述:可調(diào)用 UNIX 系統(tǒng)的系統(tǒng)層 syslog()函數(shù)。危險等級:中 readlink()功能描述:返回符號連接指向的目標文件內(nèi)容。危險等級:中 symlink()功能描述:在 UNIX 系統(tǒng)中建立一個符號鏈接。危險等級:高 popen()功能描述:可通過 popen()的參數(shù)傳遞一條命令,并對 popen()所打開的文件進行執(zhí)行。
危險等級:高
stream_socket_server()功能描述:建立一個 Internet 或 UNIX 服務(wù)器連接。危險等級:中 putenv()功能描述:用于在 PHP 運行時改變系統(tǒng)字符集環(huán)境。在低于 5.2.6 版本的 PHP 中,可利用該函數(shù)
修改系統(tǒng)字符集環(huán)境后,利用 sendmail 指令發(fā)送特殊參數(shù)執(zhí)行系統(tǒng) SHELL 命令。危險等級:高
第四篇:PHP中時間和日期函數(shù)總結(jié)
PHP中時間和日期函數(shù)總結(jié)
2007-11-29 00:40:28 標簽:php 時間 日期函數(shù)
PHP中所有函數(shù)都是UNIX紀元的,即從1970年1月1日開始的。日期是從這個時候開始的秒數(shù)。當一個函數(shù)調(diào)用從這時候計的秒數(shù)時,就把它當作(timestamp)時間戳。本地時間函數(shù)
1.string date(string format,inieger timestamp)該函數(shù)返回一個表示時間的字符串,是由string format 控制的。如: print(date(“Y年 m月d日”);//輸出當前,年月日.print(date(“Y年 m月d日”,60*60*24*365*10);//輸出1980年1月1日.?> 也許你會問,怎麼沒有timestamp呢?若timestamp為空時,或不寫時,表示使用當前時間一刻timestamp.表示年份的控制符: Y---四位的年份 y---兩位的年份
表示月份的控制符: m---從1-12的月份 F---英文月份名 M---簡寫的月份名 表示日號的控制符: d---前面有0的月份中日期 j--前面沒有0的日號 表示星期的控制符: l--英文星期 D--簡寫的星期
表示小時的控制符: h--從1到12小時 H---從0到23的小時 表示上下午的控制符 a---am或pm A---AM或PM 表示分鐘的控制符: i---取值00-59 表示一年中第多少天: z--一年中的第多少天 2.array getdate(integer timestamp)該函數(shù)返回一個矩陣.如: $current_date=getdate();print($current_date(“hours”));print($current_date(“minutes”);print($current_date(“seconds”);?> 說明: 元素 描述
hours 24小時格式的小時 mday 月份中日期 minutes 分鐘
mon 數(shù)字形式的月份 month 月份全稱 seconds 秒數(shù)
wday 從0到6的數(shù)字形式的星期幾 weekday 星期幾的名稱 year 年份
0 時間戳即從1970年1月1日到現(xiàn)在的秒數(shù) yday 一年中數(shù)字形式的日期
3.boolean checkdate(integer month,integer day,integer year)該函數(shù)檢查日期是否合法.如: if(checkdate(2,29,1980))print(“日期合法!n”);?> 4.integer time()該函數(shù)獲得當前時間戳.如: print(time());//輸出一大串整數(shù) ?> 5.integer mktime(integer hour,integer minutes,integer seconds,integer month, integer day,integer year)該函數(shù)返回給出日期的時間戳,即從1970年1月1日到現(xiàn)在的秒數(shù).如某參數(shù)超出范圍,該函數(shù)也可以解釋它,如13月即為第二年的一月.如: $currenthour=date(“H”);print(“50個小時后為:”);print(date(“h:i A l F dS,Y”,mktime($currenthour+50)));print(“
n”);?> 6.string microtime()該函數(shù)返回一個字符串,由當前時間的毫秒數(shù)+空格+從1970年開始的秒數(shù) print(“start:microtime()
n”);for($index=0;$index<1000;$index++)print(“good!”);print(“stop:microtime()
n”);?> 還有,各林威治標準時間函數(shù)
第五篇:PHP學(xué)習(xí)之輸出控制函數(shù)
PHP學(xué)習(xí)之輸出控制函數(shù)
PHP提供了一類比較特殊的函數(shù),這類函數(shù)稱為輸出控制函數(shù)。輸出控制函數(shù)可以用來控制腳本的輸出。這些函數(shù)在某些特殊情況下很有用,特別是腳本中已經(jīng)輸出了信息之后,再想向瀏覽器發(fā)送頭信息的情況。輸出控制函數(shù)不會作用于 header()或 setcookie()函數(shù)發(fā)送的頭信息,而只會影響類似于 echo,print輸出的信息和嵌入在 PHP 代碼之間的信息。
1、ob_start():打開輸出緩沖區(qū)
函數(shù)原型:void ob_start(void)。此函數(shù)用于打開輸出緩沖區(qū)。當緩沖區(qū)激活時,所有來自PHP程序的非文件頭信息均不會發(fā)送,而是保存在內(nèi)部緩沖區(qū)。為了輸出緩沖區(qū)的內(nèi)容,可以使用ob_end_flush()或flush()輸出緩沖區(qū)的內(nèi)容。
2、ob_flush()
函數(shù)原型:void ob_flush(void)。這個函數(shù)將送出緩沖區(qū)的內(nèi)容。
3、ob_end_clean()
函數(shù)原型:bool ob_end_clean(void)。此函數(shù)清空輸出緩沖區(qū)的內(nèi)容并關(guān)閉這個緩沖區(qū)。值得注意的是,這個函數(shù)不會發(fā)送緩沖區(qū)的內(nèi)容,而是把緩沖區(qū)清空。
4、ob_clean()
函數(shù)原型:bool ob_end_clean(void)。此函數(shù)會將緩沖區(qū)內(nèi)容清除,但不關(guān)閉緩沖,可繼續(xù)向其中寫入內(nèi)容。
5、ob_end_flush()
函數(shù)原型:void ob_end_flush(void)。此函數(shù)發(fā)送緩沖區(qū)的內(nèi)容到瀏覽器,并且關(guān)閉輸出緩沖區(qū)。
6、ob_get_contents()
函數(shù)原型:string ob_get_contents(void)。這個函數(shù)會返回當前緩沖區(qū)中的內(nèi)容,如果輸出緩沖區(qū)沒有激活,則返回 FALSE。
7、ob_get_length()
函數(shù)原型:int ob_get_length(void)。這個函數(shù)會返回當前緩沖區(qū)中的長度。
平時我們可能不常接觸到輸出控制函數(shù),可是前面說了,輸出控制函數(shù)是很有用的,比如可以解決諸如:Header had already send by!之類的header錯誤。