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