經(jīng)驗(yàn)總結(jié)PHP應(yīng)用技巧
經(jīng)過長(zhǎng)時(shí)間的工作積累,總結(jié)了一些PHP應(yīng)用技巧,這里就分享給大家吧。PHP (Hypertext Preprocessor)是一種 HTML 內(nèi)嵌式的語(yǔ)言,也是目前比較流行的網(wǎng)頁(yè)編程語(yǔ)言。它支持的后端數(shù)據(jù)庫(kù)種類凡多,幾乎含蓋了當(dāng)前的所有數(shù)據(jù)庫(kù)系統(tǒng)。同時(shí)它包含了一般語(yǔ)言有的數(shù)學(xué)運(yùn)算、時(shí)間處理、文件系統(tǒng)、字符串處理、行程處理等功能,再加上它是免費(fèi)的系統(tǒng),使得成本與效益比,幾乎等于無(wú)限大。
1、PHP應(yīng)用技巧判斷某個(gè)函數(shù)是否被支持
由于在PHP中我們可以靈活的使用增加或者減少php支持的模塊,所以有的時(shí)候我們?cè)谑褂肞HP之前,總是會(huì)首先確定某個(gè)模塊是否被加載,比如,看看GD圖形模塊是否被支持,可以用下面的這段代碼:
- if(!function_exists('imagecreate')) {
 - die('這個(gè)主機(jī)目前不支持GD圖形模塊');
 - }
 - ?>
 
同樣的道理,我們可以利用類似的代碼,測(cè)試 MSSQL,OCI等模塊是否被支持。
2、PHP應(yīng)用技巧在字符串中把網(wǎng)址改成超級(jí)鏈接
在網(wǎng)頁(yè)中提交表單時(shí),經(jīng)常在提交的說明文本中出現(xiàn)一些網(wǎng)址,比如個(gè)人主頁(yè)等信息,如果在顯示時(shí)自動(dòng)將其轉(zhuǎn)為超級(jí)鏈接,那將是一件很愜意的事,就像用WORD編輯文檔時(shí)自動(dòng)出現(xiàn)超級(jí)鏈接一樣。下面這段代碼就很好的實(shí)現(xiàn)了其功能。
- $string = "連接賽迪網(wǎng)http://www.ccidnet.com 站點(diǎn)";
 - //注意:連接后需要有個(gè)空格或回車。
 - $string = eregi_replace("http://([^ ,\r\n]*)","<a href=\\0 tarrget=_blank>\\0</a>",$string);
 - $string = eregi_replace("ftp://([^ ,\r\n]*)","<a href=\\0 target=_blank>\\0</a>",$string);
 - print $string;
 - ?>
 
3、PHP應(yīng)用技巧用PHP處理多個(gè)同名復(fù)選框
如果一個(gè)表單中有多個(gè)同名復(fù)選框,在提交到php時(shí)卻只有一個(gè)值,而并不像asp那樣是一串用逗號(hào)分割的值。解決的方法是利用數(shù)組。將復(fù)選框的name后面加上[],例如: 改為:。這樣php將得到一個(gè)叫pp的陣列。在提交的表單中先用Count(pp)來(lái)判斷數(shù)組的個(gè)數(shù)即選中的個(gè)數(shù),然后對(duì)數(shù)組進(jìn)行分別處理就行了。同樣的道理也適應(yīng)于處理下拉框的多選問題。
4、PHP應(yīng)用技巧利用static實(shí)現(xiàn)表格的顏色隔行顯示
我們用PHP從數(shù)據(jù)庫(kù)查詢數(shù)據(jù),并將結(jié)果輸出到瀏覽器上,如果結(jié)果有很多行,表格的bgcolor(背景色)如果全是單色的,瀏覽者會(huì)感覺不太舒服。那么怎樣做使表格各行的顏色不同呢?請(qǐng)看下面代碼:
- function getcolor()
 - {
 - static $colorvalue;//定義一個(gè)靜態(tài)變量
 - if($colorvalue=="#eeeeee")
 - $colorvalue="#F5F5F5";
 - else $colorvalue="#eeeeee";
 - return($colorvalue);
 - }
 - print("<table border=1>\n");//下面輸出10行
 - for($i=0;$i<10;$i++)
 - {
 - $bcolor=getcolor();//換背景顏色
 - print("<tr bgcolor=$bcolor>\n");
 - print("<td>$i</td>\n");
 - print("</tr>");
 - }
 - print("</table>\n");
 - ?>
 
說明:此程序中定義了一個(gè)靜態(tài)變量static $colorvalue意思是在函數(shù)調(diào)用結(jié)束后,此變量$colorvalue還保留值,沒有消失。當(dāng)再次調(diào)用getcolor()函數(shù)時(shí),變量$colorvalue的值是上次函數(shù)調(diào)用結(jié)束時(shí)$colorvalue的值。
#T#5、在php中避免重復(fù)引用的辦法
大家知道,在C語(yǔ)言中,我們可以用#define來(lái)定義一個(gè)MACRO名字,通過檢查是否該MACRO名字定義過來(lái)決定該頭文件是否被引用。在PHP中也有同樣的問題,比如:A引用B,C, B引用C,如果不采取措施,C將被引用2次。這樣可能會(huì)導(dǎo)致一些奇怪的問題。解決辦法:定義一個(gè)全局變量,并且通過檢查該變量是否定義過來(lái)解決這個(gè)問題. 辦法很簡(jiǎn)單,類似C。 只是這個(gè)全局變量我建議都用['user_packages'] ['headfilename']的命名規(guī)則。
- if (!empty($GLOBALS['FOODTAILS']['GLOBALDEFINE'])) return;
 - $GLOBALS['FOODTAILS']['GLOBALDEFINE'] = true;
 - class FOODTAILS {...
 - };
 - ?>
 
另外,在主程序中盡量采用require_once "headfiles.php"; 以避免重復(fù)引用。















 
 
 
 
 
 
 