第一篇: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ū)。當(dāng)緩沖區(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ù)會返回當(dāng)前緩沖區(qū)中的內(nèi)容,如果輸出緩沖區(qū)沒有激活,則返回 FALSE。
7、ob_get_length()
函數(shù)原型:int ob_get_length(void)。這個函數(shù)會返回當(dāng)前緩沖區(qū)中的長度。
平時我們可能不常接觸到輸出控制函數(shù),可是前面說了,輸出控制函數(shù)是很有用的,比如可以解決諸如:Header had already send by!之類的header錯誤。
第二篇: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ù).當(dāng)某個對象成為垃圾或者當(dāng)對象被顯式銷毀時執(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.提取頁面和瀏覽器提交的變量,作用相當(dāng)于使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.獲得當(dāng)前的腳本網(wǎng)址22.把全角數(shù)字轉(zhuǎn)為半角數(shù)字23.去除HTML標(biāo)記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}//獲得當(dāng)前的腳本網(wǎng)址
if(empty($_SERVER[”QUERY_STRING“]))$nowurl = $scriptName;else $nowurl = $scriptName.”?“.$_SERVER[”QUERY_STRING“];} return $nowurl;}?>{downsource}//把全角數(shù)字轉(zhuǎn)為半角數(shù)字{downsource}//去除HTML標(biāo)記“,”>“,$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 標(biāo)記
$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學(xué)習(xí)推薦
PHP學(xué)習(xí)推薦
PHP,是英文超級文本預(yù)處理語言Hypertext Preprocessor的縮寫。PHP 是一種 HTML 內(nèi)嵌式的語言,是一種在服務(wù)器端執(zhí)行的嵌入HTML文檔的腳本語言,現(xiàn)在越來越多的人加入到了php的大家庭中,其中很多人只是淺嘗輒止,為何會如此呢?最大的障礙莫過于學(xué)習(xí)的過程枯燥乏味,從而失去學(xué)習(xí)興趣,那么小編就自己的經(jīng)驗來說說怎樣學(xué)習(xí)php吧。
學(xué)習(xí)方法之視頻教程
相對于讀書來說,我更喜歡看視頻學(xué)習(xí),可能小編我對影像比文字記憶更加深刻吧。每看完一個視頻教程,我都會閉上眼睛休息一會,把剛才看的內(nèi)容消化消化,然后再開始練習(xí)剛才看過的內(nèi)容,盡可能不邊看邊做,因為這樣學(xué)的快同樣也忘得快,如果實在想不起來的話,可以再打開教程看一遍,切記不可囫圇吞棗,好高騖遠,要穩(wěn)扎穩(wěn)打,把你看過的教程切切實實的記在心里。只有一步一個腳印,你的學(xué)習(xí)之路才能走的更遠,否則的話,你走的越遠,越會覺的道路是如此艱辛,或許你就會放棄學(xué)習(xí)。那么都有哪些視頻教程能幫我們學(xué)習(xí)php呢,小編我就為大家介紹幾個吧:
php100
LAMP兄弟連
李炎恢的php
學(xué)習(xí)方法之看書: 1.《PHP與MySQL程序設(shè)計(第4版)》
2.《PHP Web 2.0 開發(fā)實戰(zhàn)》
3.《PHP高級程序設(shè)計:模式、框架與測試》
4.《PHP 5 高級應(yīng)用開發(fā)實踐》
5.《細說php》
學(xué)習(xí)過程中不要死記語法,要多動手,多練習(xí),當(dāng)你遇到問題的時候,首先嘗試自己解決。多用google,baidu,網(wǎng)絡(luò)是一個大知識庫,是最好的老師,你遇到的問題,別人也遇到過,多去搜索一下吧.多閱讀別人的源代碼,要看懂別人的設(shè)計思想,不斷融為已用.
第五篇:不得不防的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()功能描述:可改變當(dāng)前 PHP 進程的工作根目錄,僅當(dāng)系統(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 進行運行過程當(dāng)中(而非啟動時)加載一個 PHP 外部模塊。危險等級:高 pfsockopen()功能描述:建立一個 Internet 或 UNIX 域的 socket 持久連接。危險等級:高 syslog()功能描述:可調(diào)用 UNIX 系統(tǒng)的系統(tǒng)層 syslog()函數(shù)。危險等級:中 readlink()功能描述:返回符號連接指向的目標(biāo)文件內(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 命令。危險等級:高