亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

首頁(yè) php教程 php手冊(cè) php技巧篇:高質(zhì)量php代碼的50個(gè)實(shí)用技巧(下)

php技巧篇:高質(zhì)量php代碼的50個(gè)實(shí)用技巧(下)

Mar 19, 2017 am 10:09 AM
php程式碼 php實(shí)用技巧

這篇文章主要為大家分享了50個(gè)高質(zhì)量PHP代碼的實(shí)用技巧,大家必備的php實(shí)用代碼,感興趣的小伙伴們可以參考一下

接著上篇《高質(zhì)量PHP代碼的50個(gè)實(shí)用技巧必備(上)》繼續(xù)研究。

26. 避免直接寫SQL, 抽象之
不厭其煩的寫了太多如下的語(yǔ)句:?

<span style="color:#333333;font-family:&#39;&#39;Helvetica, Arial, sans-serif&#39;&#39;;">$query = "INSERT INTO users(name , email , address , phone) VALUES(&#39;$name&#39; , &#39;$email&#39; , &#39;$address&#39; , &#39;$phone&#39;)";
 $db->query($query); //call to mysqli_query()</span>

這不是個(gè)建壯的方案. 它有些缺點(diǎn):

  • >>每次都手動(dòng)轉(zhuǎn)義值

  • >>驗(yàn)證查詢是否正確

  • >>查詢的錯(cuò)誤會(huì)花很長(zhǎng)時(shí)間識(shí)別(除非每次都用if-else檢查)

  • >>很難維護(hù)復(fù)雜的查詢

因此使用函數(shù)封裝:


<span style="color:#333333;font-family:&#39;&#39;Helvetica, Arial, sans-serif&#39;&#39;;">function insert_record($table_name , $data)
 {
 foreach($data as $key => $value)
 {
 //mysqli_real_escape_string
 $data[$key] = $db->mres($value);
 }
 $fields = implode(&#39;,&#39; , array_keys($data));
 $values = "&#39;" . implode("&#39;,&#39;" , array_values($data)) . "&#39;";
 //Final query
 $query = "INSERT INTO {$table}($fields) VALUES($values)";
 return $db->query($query);
}
 $data = array(&#39;name&#39; => $name , &#39;email&#39; => $email , &#39;address&#39; => $address , &#39;phone&#39; => $phone);
 insert_record(&#39;users&#39; , $data);</span>

看到了嗎? 這樣會(huì)更易讀和擴(kuò)展. record_data 函數(shù)小心的處理了轉(zhuǎn)義。最大的優(yōu)點(diǎn)是數(shù)據(jù)被預(yù)處理為一個(gè)數(shù)組, 任何語(yǔ)法錯(cuò)誤都會(huì)被捕獲。該函數(shù)應(yīng)該定義在某個(gè)database類中, 你可以像 $db->insert_record這樣調(diào)用。查看本文, 看看怎樣讓你處理數(shù)據(jù)庫(kù)更容易。類似的也可以編寫update,select,delete方法. 試試吧.

27. 將數(shù)據(jù)庫(kù)生成的內(nèi)容緩存到靜態(tài)文件中
如果所有的內(nèi)容都是從數(shù)據(jù)庫(kù)獲取的, 它們應(yīng)該被緩存. 一旦生成了, 就將它們保存在臨時(shí)文件中. 下次請(qǐng)求該頁(yè)面時(shí), 可直接從緩存中取, 不用再查數(shù)據(jù)庫(kù).
好處:
>>節(jié)約php處理頁(yè)面的時(shí)間, 執(zhí)行更快
>>更少的數(shù)據(jù)庫(kù)查詢意味著更少的mysql連接開(kāi)銷

28. 在數(shù)據(jù)庫(kù)中保存session
基于文件的session策略會(huì)有很多限制. 使用基于文件的session不能擴(kuò)展到集群中, 因?yàn)閟ession保存在單個(gè)服務(wù)器中. 但數(shù)據(jù)庫(kù)可被多個(gè)服務(wù)器訪問(wèn), 這樣就可以解決問(wèn)題.
在數(shù)據(jù)庫(kù)中保存session數(shù)據(jù), 還有更多好處:
>>處理username重復(fù)登錄問(wèn)題. 同個(gè)username不能在兩個(gè)地方同時(shí)登錄.
>>能更準(zhǔn)備的查詢?cè)诰€用戶狀態(tài).

29. 避免使用全局變量

  • >>使用 defines/constants

  • >>使用函數(shù)獲取值

  • >>使用類并通過(guò)$this訪問(wèn)

30. 在head中使用base標(biāo)簽
沒(méi)聽(tīng)說(shuō)過(guò)? 請(qǐng)看下面:


<head>
 <base href="http://www.domain.com/store/">
 </head>
 <body>
 <img src="happy.jpg" />
 </body>
 </html>

base 標(biāo)簽非常有用. 假設(shè)你的應(yīng)用分成幾個(gè)子目錄, 它們都要包括相同的導(dǎo)航菜單.

  • www.domain.com/store/home.php

  • www.domain.com/store/products/ipad.php

在首頁(yè)中, 可以寫:


<a href="home.php">Home</a>
<a href="products/ipad.php">Ipad</a>

但在你的ipad.php不得不寫成:


<span style="color:#333333;font-family:&#39;&#39;Helvetica, Arial, sans-serif&#39;&#39;;"><a href="../home.php">Home</a>
 <a href="ipad.php">Ipad</a></span>

因?yàn)槟夸洸灰粯? 有這么多不同版本的導(dǎo)航菜單要維護(hù), 很糟糕啊。因此, 請(qǐng)使用base標(biāo)簽.


<span style="color:#333333;font-family:&#39;&#39;Helvetica, Arial, sans-serif&#39;&#39;;"><head>
 <base href="http://www.domain.com/store/">
 </head>
 <body>
 <a href="home.php">Home</a>
 <a href="products/ipad.php">Ipad</a>
 </body>
 </html></span>

現(xiàn)在, 這段代碼放在應(yīng)用的各個(gè)目錄文件中行為都一致.

31. 永遠(yuǎn)不要將 error_reporting 設(shè)為 0
關(guān)閉不相的錯(cuò)誤報(bào)告. E_FATAL 錯(cuò)誤是很重要的.


<span style="color:#333333;font-family:&#39;Helvetica, Arial, sans-serif&#39;;">ini_set(&#39;display_errors&#39;, 1);
 error_reporting(~E_WARNING & ~E_NOTICE & ~E_STRICT);</span>

32. 注意平臺(tái)體系結(jié)構(gòu)
integer在32位和64位體系結(jié)構(gòu)中長(zhǎng)度是不同的. 因此某些函數(shù)如 strtotime 的行為會(huì)不同.
在64位的機(jī)器中, 你會(huì)看到如下的輸出.


<span style="color:#333333;font-family:&#39;&#39;Helvetica, Arial, sans-serif&#39;&#39;;">$ php -a 
 Interactive shell 
 php > echo strtotime("0000-00-00 00:00:00"); 
 -62170005200 
 php > echo strtotime(&#39;1000-01-30&#39;); 
 -30607739600 
 php > echo strtotime(&#39;2100-01-30&#39;); 
 4104930600</span>

但在32位機(jī)器中, 它們將是bool(false). 查看這里, 了解更多.

33. 不要過(guò)分依賴 set_time_limit
如果你想限制最小時(shí)間, 可以使用下面的腳本:


<span style="color:#333333;font-family:&#39;&#39;Helvetica, Arial, sans-serif&#39;&#39;;">set_time_limit(30);
 //Rest of the code</span>

高枕無(wú)憂嗎? 注意任何外部的執(zhí)行, 如系統(tǒng)調(diào)用,socket操作, 數(shù)據(jù)庫(kù)操作等, 就不在set_time_limits的控制之下.
因此, 就算數(shù)據(jù)庫(kù)花費(fèi)了很多時(shí)間查詢, 腳本也不會(huì)停止執(zhí)行. 視情況而定.

34. 使用擴(kuò)展庫(kù)
一些例子:

  • >>mPDF — 能通過(guò)html生成pdf文檔

  • >>PHPExcel — 讀寫excel

  • >>PhpMailer — 輕松處理發(fā)送包含附近的郵件

  • >>pChart — 使用php生成報(bào)表

使用開(kāi)源庫(kù)完成復(fù)雜任務(wù), 如生成pdf, ms-excel文件, 報(bào)表等.

35. 使用MVC框架
是時(shí)候使用像 codeigniter 這樣的MVC框架了. MVC框架并不強(qiáng)迫你寫面向?qū)ο蟮拇a. 它們僅將php代碼與html分離.

  • >>明確區(qū)分php和html代碼. 在團(tuán)隊(duì)協(xié)作中有好處, 設(shè)計(jì)師和程序員可以同時(shí)工作.

  • >>面向?qū)ο笤O(shè)計(jì)的函數(shù)能讓你更容易維護(hù)

  • >>內(nèi)建函數(shù)完成了很多工作, 你不需要重復(fù)編寫

  • >>開(kāi)發(fā)大的應(yīng)用是必須的

  • >>很多建議, 技巧和hack已被框架實(shí)現(xiàn)了

36. 時(shí)常看看 phpbench
phpbench 提供了些php基本操作的基準(zhǔn)測(cè)試結(jié)果, 它展示了一些徽小的語(yǔ)法變化是怎樣導(dǎo)致巨大差異的.
查看php站點(diǎn)的評(píng)論, 有問(wèn)題到IRC提問(wèn), 時(shí)常閱讀開(kāi)源代碼, 使用Linux開(kāi)發(fā).

37. 如何正確的創(chuàng)建一個(gè)網(wǎng)站的Index頁(yè)面
創(chuàng)建每一個(gè)網(wǎng)站時(shí),建立網(wǎng)站的index頁(yè)面是首要做的事情之一。如果你是一個(gè)PHP新手,在編寫index頁(yè)面時(shí)典型的做法是只對(duì)index頁(yè)面所需的內(nèi)容進(jìn)行編程,其它鏈接創(chuàng)建另一個(gè)頁(yè)面。不過(guò),如果想學(xué)習(xí)一種更高效的方式來(lái)實(shí)現(xiàn)PHP編程,可以采用“index.php?page=home”模式,許多網(wǎng)站都在采用這種模式。

38. 使用Request Global Array抓取數(shù)據(jù)
實(shí)際上我們沒(méi)有任何理由使用$_GET和$_POST數(shù)組來(lái)抓取數(shù)值。$_REQUEST這個(gè)全局?jǐn)?shù)組能夠讓你獲取一個(gè)get或form請(qǐng)求。因此,多數(shù)情況下解析數(shù)據(jù)的更高效代碼大體如下:


$action = isset($_REQUEST[&#39;action&#39;]) ? $_REQUEST[&#39;action&#39;] : 0;

39. 利用var_dump進(jìn)行PHP代碼調(diào)試
如果你在尋找php調(diào)試技術(shù),我必須說(shuō)var_dump應(yīng)該是你要找的目標(biāo)。在顯示php信息方面這個(gè)命令可以滿足你的所有需要。而調(diào)試代碼的多數(shù)情況與得到PHP中的數(shù)值有關(guān)。

40. PHP處理代碼邏輯,Smarty處理展現(xiàn)層
Smarty是一個(gè)使用PHP寫出來(lái)的模板PHP模板引擎,是目前業(yè)界最著名的PHP模板引擎之一。它分離了邏輯代碼和外在的內(nèi)容,提供了一種易于管理和使用的方法,用來(lái)將原本與HTML代碼混雜在一起PHP代碼邏輯分離。簡(jiǎn)單的講,目的就是要使PHP程序員同前端人員分離,使程序員改變程序的邏輯內(nèi)容不會(huì)影響到前端人員的頁(yè)面設(shè)計(jì),前端人員重新修改頁(yè)面不會(huì)影響到程序的程序邏輯,這在多人合作的項(xiàng)目中顯的尤為重要。

41. 的確需要使用全局?jǐn)?shù)值時(shí),創(chuàng)建一個(gè)Config文件
動(dòng)輒創(chuàng)建全局?jǐn)?shù)值是一種糟糕的做法,不過(guò)有時(shí)候?qū)嶋H情況的確又需要這么做。對(duì)于數(shù)據(jù)庫(kù)表或數(shù)據(jù)庫(kù)連接信息使用全局?jǐn)?shù)值是一個(gè)不錯(cuò)的想法,但不要在你的PHP代碼中頻繁使用全局?jǐn)?shù)值。另外,更好的一種做法是把你的全局變量存放在一個(gè)config.php文件中。

42. 如果未定義,禁止訪問(wèn)!
如果你正確的創(chuàng)建了頁(yè)面,那么任何其他人沒(méi)有理由訪問(wèn)index.php或home.php之外的index.php頁(yè)面。一旦index.php被訪問(wèn)后,你可以通過(guò)獲得變量的方式來(lái)打開(kāi)需要的頁(yè)面。你的index頁(yè)面應(yīng)該包含類似的以下代碼:


define(&#39;yourPage&#39;,1);

然后,其它頁(yè)面應(yīng)該包含:


if (!defined(&#39;yourPage&#39;)) die(&#39;Access Denied&#39;);

這么做的目的是防止直接訪問(wèn)你的其它php頁(yè)面。這樣,任何試圖不通過(guò)index.php訪問(wèn)其它網(wǎng)頁(yè)的人,將得到“訪問(wèn)被拒絕”的消息。

43. 創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)類
如果你正在進(jìn)行數(shù)據(jù)庫(kù)編程(在PHP中非常常見(jiàn)的任務(wù)),一個(gè)不錯(cuò)的想法是創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)類來(lái)處理任何數(shù)據(jù)庫(kù)管理功能。示例代碼如下:


public function dbExec($query)  
    
 {  
    
   $result = $this->db->exec($query);  
    
   if (PEAR::isError($result))  
    
     errorRedirect($result->getMessage(), true);  
    
   else 
    
     return $result;  
    
 }

這個(gè)函數(shù)僅接收一個(gè)查詢語(yǔ)句并對(duì)其執(zhí)行。它還處理可能出現(xiàn)的任何錯(cuò)誤。你還可以在這兒包含審核代碼,不過(guò)我更喜歡使用一個(gè)類似的審核函數(shù):


// checks if arguments given are integer values not less than 0 - has multiple arguments  
    
 function sanitizeInput()  
    
 {  
    
   $numargs = func_num_args();  
    
   $arg_list = func_get_args();  
    
   for ($i = 0; $i < $numargs; $i++) {  
    
     if (!is_numeric($arg_list[$i]) || $arg_list[$i] < 0)  
    
       errorRedirect("Unexpected variable value", true);  
    
   }  
    
 }

44. 一個(gè)php文件處理輸入,一個(gè)class.php文件處理具體功能
不讓代碼變得混亂的一個(gè)重要方法是:獲取用戶輸入后,將其重定向到其它函數(shù)來(lái)進(jìn)行處理。原理非常簡(jiǎn)單,php文件獲得我們需要的任何輸入,然后將其執(zhí)行重定向到類文件中的一個(gè)函數(shù)。舉例來(lái)講,假設(shè)有一個(gè)類似“index.php?page=profile&action=display”的URL。由profile.php來(lái)檢索該網(wǎng)址并得到操作是“display”。然后使用一個(gè)簡(jiǎn)單的switch函數(shù),我們來(lái)執(zhí)行真正的顯示函數(shù):


require_once PROJECTROOT.&#39;libs/messages.class.php&#39;;  
    
$message = new Message();  
    
switch ($action) 
    
{ 
    
  case &#39;display&#39;: 
    
    $message->display(); 
    
    break;  
    
...

如上所示,我使用了一個(gè)消息類,然后開(kāi)始進(jìn)行switch檢查。$message只是被類中的調(diào)用函數(shù)使用的一個(gè)對(duì)象。

45. 了解你的SQL語(yǔ)句,并總是對(duì)其審查(Sanitize)
正如我以前所提到的,任何php網(wǎng)站中最重要的部分有99%的可能是數(shù)據(jù)庫(kù)。因此,你需要非常熟悉如何正確的使用sql。學(xué)會(huì)關(guān)聯(lián)表和更多高級(jí)技術(shù)。下面我將展示一個(gè)使用MySQL的函數(shù)示例,并使用本文第7條函數(shù)進(jìn)行審查。


private function getSentMessages($id)  
    
 {  
    
$this->util->sanitizeInput($id);  
    
  $pm_table = $GLOBALS[&#39;config&#39;][&#39;privateMsg&#39;];  
    
 $users = $GLOBALS[&#39;config&#39;][&#39;users&#39;];  
    
   $sql = "SELECT PM.*, USR.username as name_sender FROM $pm_table PM, $users USR  
    
     WHERE id_sender = &#39;$id&#39; AND sender_purge = FALSE AND USR.id = PM.id_receiver AND is_read = TRUE  
    
     ORDER BY date_sent DESC";  
    
 $result = $this->dbQueryAll($sql);  
    
  return $result;  
    
 }

首先,我們對(duì)用戶輸入進(jìn)行檢查(通過(guò)一個(gè)GET變量傳遞消息id),然后我們執(zhí)行我們的SQL命令。注意這兒SQL的用法。你需要了解如何使用別名和關(guān)聯(lián)表。

46. 當(dāng)你只需要一個(gè)對(duì)象時(shí),使用單例模式
在PHP中相當(dāng)常見(jiàn)的一種情形時(shí),我們只需要?jiǎng)?chuàng)建一個(gè)對(duì)象一次,然后在我們的整個(gè)程序中使用它。一個(gè)很好的例子就是smarty變量,一旦被初始化后就可以在任何地方使用。這種情形的一個(gè)很好實(shí)現(xiàn)方案就是單例模式。示例代碼如下:


function smartyObject()  
    
 {  
    
   if ($GLOBALS[&#39;config&#39;][&#39;SmartyObj&#39;] == 0)  
    
   {  
    
     $smarty = new SmartyGame();  
    
     $GLOBALS[&#39;config&#39;][&#39;SmartyObj&#39;] = $smarty;  
    
   }  
    
   else 
    
     $smarty = $GLOBALS[&#39;config&#39;][&#39;SmartyObj&#39;];  
    
   return $smarty;  
    
 }

注意,我們擁有一個(gè)全局smarty變量(該示例中它在config.php中被初始化),如果它的值為0,我們將創(chuàng)建一個(gè)新smarty對(duì)象。否則,它意味著該對(duì)象已經(jīng)被創(chuàng)建,我們只需要返回它。

47. 關(guān)于PHP重定向
方法一:header("Location:index.php");
方法二:echo"<script>window.location=\"$PHP_SELF\";</script>";
方法三:echo"";

48. 獲取訪問(wèn)者瀏覽器


functionbrowse_infor()
{
$browser="";$browserver="";
$Browsers=array("Lynx","MOSAIC","AOL","Opera","JAVA","MacWeb","WebExplorer","OmniWeb");
$Agent=$GLOBALS["HTTP_USER_AGENT"];
for($i=0;$i<=7;$i++)
{
if(strpos($Agent,$Browsers[$i]))
{
$browser=$Browsers[$i];
$browserver="";
}
}
if(ereg("Mozilla",$Agent)&&!ereg("MSIE",$Agent))
{
$temp=explode("(",$Agent);$Part=$temp[0];
$temp=explode("/",$Part);$browserver=$temp[1];
$temp=explode("",$browserver);$browserver=$temp[0];
$browserver=preg_replace("/([\d\.]+)/","\1",$browserver);
$browserver="$browserver";
$browser="NetscapeNavigator";
}
if(ereg("Mozilla",$Agent)&&ereg("Opera",$Agent))
{
$temp=explode("(",$Agent);$Part=$temp[1];
$temp=explode(")",$Part);$browserver=$temp[1];
$temp=explode("",$browserver);$browserver=$temp[2];
$browserver=preg_replace("/([\d\.]+)/","\1",$browserver);
$browserver="$browserver";
$browser="Opera";
}
if(ereg("Mozilla",$Agent)&&ereg("MSIE",$Agent))
{
$temp=explode("(",$Agent);$Part=$temp[1];
$temp=explode(";",$Part);$Part=$temp[1];
$temp=explode("",$Part);$browserver=$temp[2];
$browserver=preg_replace("/([\d\.]+)/","\1",$browserver);
$browserver="$browserver";
$browser="InternetExplorer";
}
if($browser!="")
{
$browseinfo="$browser$browserver";
}
else
{
$browseinfo="Unknown";
}
return$browseinfo;
}
//調(diào)用方法$browser=browseinfo();直接返回結(jié)果

49.獲取訪問(wèn)者操作系統(tǒng)


functionosinfo(){
$os="";
$Agent=$GLOBALS["HTTP_USER_AGENT"];
if(eregi(&#39;win&#39;,$Agent)&&strpos($Agent,&#39;95&#39;)){
$os="Windows95";
}
elseif(eregi(&#39;win9x&#39;,$Agent)&&strpos($Agent,&#39;4.90&#39;)){
$os="WindowsME";
}
elseif(eregi(&#39;win&#39;,$Agent)&&ereg(&#39;98&#39;,$Agent)){
$os="Windows98";
}
elseif(eregi(&#39;win&#39;,$Agent)&&eregi(&#39;nt5\.0&#39;,$Agent)){
$os="Windows2000";
}
elseif(eregi(&#39;win&#39;,$Agent)&&eregi(&#39;nt&#39;,$Agent)){
$os="WindowsNT";
}
elseif(eregi(&#39;win&#39;,$Agent)&&eregi(&#39;nt5\.1&#39;,$Agent)){
$os="WindowsXP";
}
elseif(eregi(&#39;win&#39;,$Agent)&&ereg(&#39;32&#39;,$Agent)){
$os="Windows32";
}
elseif(eregi(&#39;linux&#39;,$Agent)){
$os="Linux";
}
elseif(eregi(&#39;unix&#39;,$Agent)){
$os="Unix";
}
elseif(eregi(&#39;sun&#39;,$Agent)&&eregi(&#39;os&#39;,$Agent)){
$os="SunOS";
}
elseif(eregi(&#39;ibm&#39;,$Agent)&&eregi(&#39;os&#39;,$Agent)){
$os="IBMOS/2";
}
elseif(eregi(&#39;Mac&#39;,$Agent)&&eregi(&#39;PC&#39;,$Agent)){
$os="Macintosh";
}
elseif(eregi(&#39;PowerPC&#39;,$Agent)){
$os="PowerPC";
}
elseif(eregi(&#39;AIX&#39;,$Agent)){
$os="AIX";
}
elseif(eregi(&#39;HPUX&#39;,$Agent)){
$os="HPUX";
}
elseif(eregi(&#39;NetBSD&#39;,$Agent)){
$os="NetBSD";
}
elseif(eregi(&#39;BSD&#39;,$Agent)){
$os="BSD";
}
elseif(ereg(&#39;OSF1&#39;,$Agent)){
$os="OSF1";
}
elseif(ereg(&#39;IRIX&#39;,$Agent)){
$os="IRIX";
}
elseif(eregi(&#39;FreeBSD&#39;,$Agent)){
$os="FreeBSD";
}
if($os==&#39;&#39;)$os="Unknown";
return$os;
}
//調(diào)用方法$os=os_infor();

50. 文件格式類


$mime_types=array(
&#39;gif&#39;=>&#39;image/gif&#39;,
&#39;jpg&#39;=>&#39;image/jpeg&#39;,
&#39;jpeg&#39;=>&#39;image/jpeg&#39;,
&#39;jpe&#39;=>&#39;image/jpeg&#39;,
&#39;bmp&#39;=>&#39;image/bmp&#39;,
&#39;png&#39;=>&#39;image/png&#39;,
&#39;tif&#39;=>&#39;image/tiff&#39;,
&#39;tiff&#39;=>&#39;image/tiff&#39;,
&#39;pict&#39;=>&#39;image/x-pict&#39;,
&#39;pic&#39;=>&#39;image/x-pict&#39;,
&#39;pct&#39;=>&#39;image/x-pict&#39;,
&#39;tif&#39;=>&#39;image/tiff&#39;,
&#39;tiff&#39;=>&#39;image/tiff&#39;,
&#39;psd&#39;=>&#39;image/x-photoshop&#39;,
  
&#39;swf&#39;=>&#39;application/x-shockwave-flash&#39;,
&#39;js&#39;=>&#39;application/x-javascript&#39;,
&#39;pdf&#39;=>&#39;application/pdf&#39;,
&#39;ps&#39;=>&#39;application/postscript&#39;,
&#39;eps&#39;=>&#39;application/postscript&#39;,
&#39;ai&#39;=>&#39;application/postscript&#39;,
&#39;wmf&#39;=>&#39;application/x-msmetafile&#39;,
  
&#39;css&#39;=>&#39;text/css&#39;,
&#39;htm&#39;=>&#39;text/html&#39;,
&#39;html&#39;=>&#39;text/html&#39;,
&#39;txt&#39;=>&#39;text/plain&#39;,
&#39;xml&#39;=>&#39;text/xml&#39;,
&#39;wml&#39;=>&#39;text/wml&#39;,
&#39;wbmp&#39;=>&#39;image/vnd.wap.wbmp&#39;,
  
&#39;mid&#39;=>&#39;audio/midi&#39;,
&#39;wav&#39;=>&#39;audio/wav&#39;,
&#39;mp3&#39;=>&#39;audio/mpeg&#39;,
&#39;mp2&#39;=>&#39;audio/mpeg&#39;,
  
&#39;avi&#39;=>&#39;video/x-msvideo&#39;,
&#39;mpeg&#39;=>&#39;video/mpeg&#39;,
&#39;mpg&#39;=>&#39;video/mpeg&#39;,
&#39;qt&#39;=>&#39;video/quicktime&#39;,
&#39;mov&#39;=>&#39;video/quicktime&#39;,
  
&#39;lha&#39;=>&#39;application/x-lha&#39;,
&#39;lzh&#39;=>&#39;application/x-lha&#39;,
&#39;z&#39;=>&#39;application/x-compress&#39;,
&#39;gtar&#39;=>&#39;application/x-gtar&#39;,
&#39;gz&#39;=>&#39;application/x-gzip&#39;,
&#39;gzip&#39;=>&#39;application/x-gzip&#39;,
&#39;tgz&#39;=>&#39;application/x-gzip&#39;,
&#39;tar&#39;=>&#39;application/x-tar&#39;,
&#39;bz2&#39;=>&#39;application/bzip2&#39;,
&#39;zip&#39;=>&#39;application/zip&#39;,
&#39;arj&#39;=>&#39;application/x-arj&#39;,
&#39;rar&#39;=>&#39;application/x-rar-compressed&#39;,
  
&#39;hqx&#39;=>&#39;application/mac-binhex40&#39;,
&#39;sit&#39;=>&#39;application/x-stuffit&#39;,
&#39;bin&#39;=>&#39;application/x-macbinary&#39;,
  
&#39;uu&#39;=>&#39;text/x-uuencode&#39;,
&#39;uue&#39;=>&#39;text/x-uuencode&#39;,
  
&#39;latex&#39;=>&#39;application/x-latex&#39;,
&#39;ltx&#39;=>&#39;application/x-latex&#39;,
&#39;tcl&#39;=>&#39;application/x-tcl&#39;,
  
&#39;pgp&#39;=>&#39;application/pgp&#39;,
&#39;asc&#39;=>&#39;application/pgp&#39;,
&#39;exe&#39;=>&#39;application/x-msdownload&#39;,
&#39;doc&#39;=>&#39;application/msword&#39;,
&#39;rtf&#39;=>&#39;application/rtf&#39;,
&#39;xls&#39;=>&#39;application/vnd.ms-excel&#39;,
&#39;ppt&#39;=>&#39;application/vnd.ms-powerpoint&#39;,
&#39;mdb&#39;=>&#39;application/x-msaccess&#39;,
&#39;wri&#39;=>&#39;application/x-mswrite&#39;,
);
5、php生成excel文檔
<?
header("Content-type:application/vnd.ms-excel");
header("Content-Disposition:filename=test.xls");
echo"test1\t";
echo"test2\t\n";
echo"test1\t";
echo"test2\t\n";
echo"test1\t";
echo"test2\t\n";
echo"test1\t";
echo"test2\t\n";
echo"test1\t";
echo"test2\t\n";
echo"test1\t";
echo"test2\t\n";
?>

//改動(dòng)相應(yīng)文件頭就可以輸出.doc.xls等文件格式了

以上就是本文的全部?jī)?nèi)容,大家結(jié)合前一篇進(jìn)行深入學(xué)習(xí),一定會(huì)有所收獲。

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

如何利用php程式碼測(cè)試功能提高程式碼的可維護(hù)性 如何利用php程式碼測(cè)試功能提高程式碼的可維護(hù)性 Aug 11, 2023 pm 12:43 PM

如何利用PHP程式碼測(cè)試功能來(lái)提高程式碼的可維護(hù)性在軟體開(kāi)發(fā)過(guò)程中,程式碼的可維護(hù)性是一個(gè)非常重要的方面。一個(gè)可維護(hù)性高的程式碼意味著它易於理解、易於修改且易於維護(hù)。而測(cè)試是非常有效的一種提高程式碼可維護(hù)性的手段。本文將介紹如何利用PHP程式碼測(cè)試功能來(lái)達(dá)到這個(gè)目的,並提供相關(guān)的程式碼範(fàn)例。單元測(cè)試單元測(cè)試是軟體開(kāi)發(fā)中常用的測(cè)試方法,用於驗(yàn)證程式碼中最小的可測(cè)試單元。在P

如何使用正規(guī)表示式批量修改PHP程式碼以滿足最新的程式碼規(guī)格? 如何使用正規(guī)表示式批量修改PHP程式碼以滿足最新的程式碼規(guī)格? Sep 05, 2023 pm 03:57 PM

如何使用正規(guī)表示式批量修改PHP程式碼以滿足最新的程式碼規(guī)格?導(dǎo)言:隨著時(shí)間推移和技術(shù)的發(fā)展,程式碼規(guī)格也不斷更新和改進(jìn)。在開(kāi)發(fā)過(guò)程中,我們經(jīng)常需要對(duì)舊有的程式碼進(jìn)行修改以符合最新的程式碼規(guī)格。然而,手動(dòng)修改可以是一項(xiàng)繁瑣且耗時(shí)的任務(wù)。在這種情況下,正規(guī)表示式可以成為一個(gè)有力的工具。利用正規(guī)表示式,我們可以批量修改程式碼並自動(dòng)滿足最新的程式碼規(guī)格。一、準(zhǔn)備工作:在使用正

如何自動(dòng)化檢查PHP程式碼是否符合最新的程式碼規(guī)格? 如何自動(dòng)化檢查PHP程式碼是否符合最新的程式碼規(guī)格? Sep 06, 2023 pm 12:33 PM

如何使用工具自動(dòng)化檢查PHP程式碼是否符合最新的程式碼規(guī)格?引言:在軟體開(kāi)發(fā)過(guò)程中,我們經(jīng)常需要遵循一定的程式碼規(guī)格來(lái)保障程式碼的可讀性、可維護(hù)性和可擴(kuò)充性。但是,手動(dòng)檢查程式碼規(guī)格是一項(xiàng)繁瑣且容易出錯(cuò)的任務(wù)。為了提高效率和減少錯(cuò)誤,我們可以使用一些工具來(lái)自動(dòng)化檢查程式碼規(guī)格。在本文中,我將介紹如何使用一些流行的工具來(lái)自動(dòng)化檢查PHP程式碼是否符合最新的程式碼規(guī)格。一、PH

PHP程式碼實(shí)作百度文心一言API介面的請(qǐng)求參數(shù)加密與解密處理 PHP程式碼實(shí)作百度文心一言API介面的請(qǐng)求參數(shù)加密與解密處理 Aug 16, 2023 pm 11:40 PM

PHP程式碼實(shí)現(xiàn)百度文心一言API介面的請(qǐng)求參數(shù)加密和解密處理一言(Hitokoto)是一個(gè)提供獲取隨機(jī)句子的服務(wù),百度文心一言API是其中一個(gè)允許開(kāi)發(fā)者呼叫的介面。為了確保資料的安全性,我們可以對(duì)請(qǐng)求參數(shù)進(jìn)行加密處理,同時(shí)在接收到回應(yīng)後進(jìn)行解密操作。以下是PHP程式碼實(shí)作百度文心一言API介面的請(qǐng)求參數(shù)加密與解密處理的範(fàn)例:&lt;?phpfunction

PHP程式碼靜態(tài)分析與漏洞偵測(cè)技術(shù) PHP程式碼靜態(tài)分析與漏洞偵測(cè)技術(shù) Aug 07, 2023 pm 05:21 PM

PHP程式碼靜態(tài)分析與漏洞偵測(cè)技術(shù)引言:隨著網(wǎng)路的發(fā)展,PHP作為一種非常流行的伺服器端腳本語(yǔ)言,被廣泛應(yīng)用於網(wǎng)站開(kāi)發(fā)和動(dòng)態(tài)網(wǎng)頁(yè)產(chǎn)生。然而,由於PHP語(yǔ)法靈活且不規(guī)範(fàn)的特性,導(dǎo)致在開(kāi)發(fā)過(guò)程中容易引入安全漏洞。為了解決這個(gè)問(wèn)題,PHP程式碼靜態(tài)分析和漏洞偵測(cè)技術(shù)應(yīng)運(yùn)而生。一、靜態(tài)分析技術(shù)靜態(tài)分析技術(shù)是指在程式碼運(yùn)行之前透過(guò)解析原始程式碼,使用靜態(tài)規(guī)則來(lái)識(shí)別潛在的安全性問(wèn)

怎樣在瀏覽器中編寫PHP程式碼並保持程式碼不被執(zhí)行? 怎樣在瀏覽器中編寫PHP程式碼並保持程式碼不被執(zhí)行? Mar 10, 2024 pm 02:27 PM

怎樣在瀏覽器中編寫PHP程式碼並保持程式碼不被執(zhí)行?隨著網(wǎng)路的普及,越來(lái)越多的人開(kāi)始接觸網(wǎng)頁(yè)開(kāi)發(fā),其中對(duì)於PHP的學(xué)習(xí)也越來(lái)越受到關(guān)注。 PHP是一種在伺服器端運(yùn)行的腳本語(yǔ)言,通常用於編寫動(dòng)態(tài)網(wǎng)頁(yè)。然而,在練習(xí)階段,我們希望能夠在瀏覽器中編寫PHP程式碼並查看結(jié)果,但又不希望程式碼被執(zhí)行。那麼,如何實(shí)現(xiàn)在瀏覽器中編寫PHP程式碼並保持不被執(zhí)行呢?以下將詳細(xì)介紹。首先,

刨析php程式碼測(cè)試功能及其重要性 刨析php程式碼測(cè)試功能及其重要性 Aug 11, 2023 pm 03:12 PM

刨析php程式碼測(cè)試功能及其重要性前言:在軟體開(kāi)發(fā)過(guò)程中,程式碼測(cè)試是一個(gè)不可或缺的環(huán)節(jié)。透過(guò)對(duì)程式碼進(jìn)行測(cè)試,可以有效地發(fā)現(xiàn)及解決潛在的bug和錯(cuò)誤,並提高程式碼的品質(zhì)和穩(wěn)定性。在php開(kāi)發(fā)中,測(cè)試功能同樣具有重要性。本文將深入探討php程式碼測(cè)試的功能及其重要性,並結(jié)合實(shí)例進(jìn)行說(shuō)明。一、php程式碼測(cè)試的功能單元測(cè)試(UnitTesting)單元測(cè)試是最常見(jiàn)的測(cè)試方

調(diào)試 PHP 程式碼中的報(bào)錯(cuò)和意外行為 調(diào)試 PHP 程式碼中的報(bào)錯(cuò)和意外行為 Aug 12, 2023 pm 04:49 PM

標(biāo)題:PHP程式碼調(diào)試:解析報(bào)錯(cuò)和意外行為導(dǎo)言:在開(kāi)發(fā)PHP應(yīng)用程式時(shí),調(diào)試是一個(gè)重要的技能。當(dāng)我們的程式碼出現(xiàn)報(bào)錯(cuò)或意外行為時(shí),我們需要快速地定位問(wèn)題並進(jìn)行修復(fù)。本文將探討一些常見(jiàn)的PHP錯(cuò)誤和意外行為,並給出對(duì)應(yīng)的程式碼範(fàn)例和偵錯(cuò)方法。一、文法錯(cuò)誤語(yǔ)法錯(cuò)誤是最常見(jiàn)的錯(cuò)誤之一。在PHP中,語(yǔ)法錯(cuò)誤會(huì)導(dǎo)致整個(gè)腳本無(wú)法正常執(zhí)行。下面是一個(gè)範(fàn)例程式碼:&lt;?php

See all articles