首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 查詢字串處理最佳實踐:善用 http_build_query

     編輯:PHP 綜合知識

傳統手工拼接的痛點

<?php
$city_name = "new york";
$invoice_id = 3456;
$paid = 1;
$query_string = "city={$city_name}&id={$invoice_id}&paid={$paid}";
$url .= $query_string;

參數少還好,一旦超過 5-6 個,程式碼難讀、易出錯(少 &、編碼遺漏),維護成本高。

現代解法:http_build_query()

PHP 5 內建,接受關聯陣列,自動 URL 編碼、正確拼接:

<?php
$city_name = "new york";
$invoice_id = 3456;
$paid = 1;
$fields = array(
    'city' => $city_name,
    'id' => $invoice_id,
    'paid' => $paid
);
$url .= http_build_query($fields, '', '&');

進階用法

數值索引陣列(多值參數)

$fields = array(
    'color' => array('red', 'green', 'blue')
);
// 輸出:color=red&color=green&color=blue

巢狀陣列(PHP 5.4+ 支援方括號語法)

$fields = array(
    'user' => array(
        'name' => 'John',
        'age' => 30
    )
);
// 輸出:user[name]=John&user[age]=30

自訂分隔符與編碼類型

// 預設分隔符 &,編碼類型 PHP_QUERY_RFC1738(空格編為 +)
// 可指定 PHP_QUERY_RFC3986(空格編為 %20)
http_build_query($fields, '', '&', PHP_QUERY_RFC3986);

為何這是最佳實踐?

  • 正確性:自動處理特殊字元編碼(空格、中文、符號)。
  • 可讀性:資料結構與呈現分離,參數一目瞭然。
  • 維護性:新增/移除參數只需修改陣列。
  • 安全性:減少手工拼接導致的 XSS 或注入風險。

補充:解析查詢字串

<?php
$query = "city=new+york&id=3456&paid=1";
parse_str($query, $params);
// $params = ['city' => 'new york', 'id' => '3456', 'paid' => '1']

parse_str 為反向操作,配合 http_build_query 形成完整查詢字串處理閉環。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved