PHP查詢字串技巧分享

來源:互聯網
上載者:User

  對於一個經驗豐富的PHP程式員來說,實現字串的查詢功能已經不是什麼難事了。在這裡我們將會介紹一種PHP查詢字串的捷徑技巧,供大家參考。

 

  RL傳遞變數對於程式員來說已經是司空見慣的事情,很多人會因此認為本文毫無新意。我們把通過URL傳遞變數的方式稱作GET方式,另外一種是POST方式。這兩種方式在PHP中都非常容易實現。舉個例子,假設準備進行資料庫查詢,需要通過GET傳遞三個變數:city、id和paid。

  傳統的PHP查詢字串方法是象下面的例子那樣構造查詢字串:

/* assume we want to pass this
variables */ 
$city_name = "new york"; 
$invoice_id = 3456; 
$paid = 1; 
$query_string = "city={$city_name}
&id={$invoice_id}&paid={$paid}"; 
$url = "http://www.example.com?" .
$query_string;

 

  如今大部分PHP開發人員都已經習慣於上面這種方法。它在只有三四個變數的時候毫無問題,但是再增加變數的話,代碼

  將變得難以理解和維護,並容易引入細微的錯誤。

  傳遞GET變數的最佳方式是通過PHP5中引入的http_build_query函數,它接收一個數組參數,返回一個格式正確、經過

  URL編碼的字串,可以直接拼接在url中。下面是相應的PHP查詢字串例子。

$city_name = "new york"; 
$invoice_id = 3456; 
$paid = 1; 
$fields = array('city' =>
$city_name, 
'id' => $invoice_id, 
'paid' => $paid); 
$url = "http://www.example.com?" .
 http_build_query($fields, '', "&");

 

  在上面這個PHP查詢字串例子中,數組包含了變數名和變數值。你也可以傳入只含變數值的數組,函數會使用你提供的變數名(通

  過函數的第二個參數傳入)加上數組的索引值構造變數名。比如說你要傳遞六個城市名,可以象下面這麼做。

$fields = array('paris', 
'new york', 
'florence', 
'london', 
'berlin', 
'delhi'); 
$url = "http:/
/www.example.php?" . 
http_build_query($fields,
 'city', "&");

 

  產生的url如下:

  http://www.example.php/?city0=paris&city1=new+york&city2=florence&city3=london&city4=berlin&city5=delhi

  (譯註:如果數組元素的key不是預設的整數,那麼key就作為對應值的變數名,而象上面例子,數組的key是預設的整數,那麼

  變數名是函數第二個參數加上元素的key,所以第一個變數名就是city0)

  PHP查詢字串函數的第三個參數是選擇性參數,表示變數的分隔字元,預設值是‘&’。不過我更喜歡顯式的傳入這個‘&’分隔字元。

  此外還可以傳入一個複雜的數組:

$city_name = "new york"; 
$invoice_id = 3456; 
$currency_name = "euro"; 
$total = 345; 
$receipt_no = "fgf44545"; 
 
$fields = array('city' =>
$city_name, 
'id' => $invoice_id, 
'paid' => array('currency' =>
 $currency_name, 
'amount' => $total, 
'receipt' => $receipt_no)  
); 
$url = "http://www.example.php?" . 
http_build_query($fields, '', "&");

 

  它將產生以下URL:

  http://www.example.com?city=new+york&id=3456&paid%5Bcurrency%5D=euro&paid%5Bamount%5D=345&paid%5Breceipt%

  5D=fgf44545

  總而言之,http_build_query()確實可以簡化GET進行PHP查詢字串的構造。



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.