簡體   English   中英

究竟如何使用http_build_query? (例)

[英]how exactly to use http_build_query? (example)

我對php 5中的http_build_query函數有疑問,所以這是問題所在:我有一些數據,例如:

$data = array(
                    'cat1'=>'billy', 
                    'cat2'=>'james deen',
                    'cat3'=>'van helsing'
                    );

我想從他們生成url字符串,我正在使用http_build_query,這正是我所需要的,但是有一個問題,空格字符用+符號代替,但是我需要'%20'符號,所以我做了一些研究, PHP手冊告訴我,我可以像這樣設置enc_type參數:

string http_build_query ( mixed $query_data [, string $numeric_prefix [, string $arg_separator [, int $enc_type = PHP_QUERY_RFC1738 ]]] )

但是我不知道如何使用它,我這樣嘗試過:

$urlstring = http_build_query($data [ int $enc_type = PHP_QUERY_RFC 3986 ]) . "\n";

像這樣:

$urlstring = http_build_query($data [, int $enc_type = PHP_QUERY_RFC 3986 ]) . "\n";

並且像這樣:

$urlstring = http_build_query($data [, string $numeric_prefix [, string $arg_separator [, int $enc_type = PHP_QUERY_RFC 3986 ]]]) . "\n";

但是我總是會出錯-意外的',',期待']'或意外的T_VARIABLE,期待']'(當我刪除komma時),所以有人可以告訴我我在做什么錯嗎? 我應該怎么做才能正確設置enc_type?

我想要得到的最終版本是: cat1=billy&cat2=james%20deen&cat3=van%20helsing

這里的問題是您在文檔中誤讀了函數簽名。 讓我為您翻譯。

  • string函數返回一個字符串
  • http_build_query函數名稱
  • mixed $query_data您可以傳遞$query_data ,它可以是多種類型(在這種情況下,允許使用數組或對象)
  • [ ... ] -以下部分是可選的
  • string $numeric_prefix (可選)傳遞一個字符串,用作數字鍵的前綴
  • [ ... ] -下一個參數也是可選的
  • string $arg_separator (可選)傳遞字符串以用作分隔符
  • [ ... ] -另一個可選參數
  • int $enc_type = PHP_QUERY_RFC1738 (可選)傳遞編碼類型,默認為顯示的值。

這意味着在您的情況下,您需要致電:

http_build_query($data, null, "&", PHP_QUERY_RFC3986);
$query = http_build_query($data, null, '&', PHP_QUERY_RFC3986);

手冊中的符號使用[...]作為可選的擴展,不是實際語法的一部分。 它還指出了參數名稱,其類型和默認值,您不需要也不能提供所有這些參數。 您需要通過傳遞默認值(此處為null'&' )來跳過您不感興趣的兩個參數。 您實際上感興趣的參數是傳遞文字常量PHP_QUERY_RFC3986

如果您想成為一個非常好的公民,請注意,第三個arg_separator參數的默認值來自arg_separator.output ini設置; 它實際上並沒有默認為'&' 因此,這更正確:

http_build_query($data, null, ini_get('arg_separator.output'), PHP_QUERY_RFC3986)

PHP手冊中顯示的功能簽名不是PHP代碼示例 相反,它們只是利用通用文檔約定的文檔:

  • 方括號( [] )表示可選
  • 省略號( ... )意味着更多
  • 類型前綴顯示數據類型

因此,這僅意味着:

  • $query_data可以有幾種類型
  • $numeric_prefix$arg_separator必須為字符串(否則將強制轉換為一個)
  • $enc_type必須為int(或將其$enc_type為一個)
  • 函數返回一個字符串
  • 除第一個參數外,所有參數都是可選的

使用此信息來編寫有效的 PHP。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM