# URL地址處理函數
>[success]php中經常會處理一些關于url的操作,特別是Url的參數的組合等等
## 1.`parse_str`
>[success] 這個函數是將一個字符串(類似于url參數的字符串)轉為數組
>[info] (PHP 4, PHP 5, PHP 7)
>將字符串解析成多個變量
>
### 語法:
~~~
void parse_str ( string $encoded_string [, array &$result ] )
~~~
如果 encoded_string 是 URL 傳遞入的查詢字符串(query string),則將它解析為變量并設置到當前作用域(如果提供了 result 則會設置到該數組里 )。
### 參數
`encoded_string`
輸入的字符串。
`result`
如果設置了第二個變量 result, 變量將會以數組元素的形式存入到這個數組,作為替代。
>[danger]沒有返回值
>
### 實列
## 2. `http_build_query()`
>[success]這個相函數的功能和`parse_str`功能是相反的,兩者可以逆向解析。
>
>[info](PHP 5, PHP 7)
http_build_query — 生成 URL-encode 之后的請求字符串
### 語法
~~~
string http_build_query ( mixed $query_data [, string $numeric_prefix [, string $arg_separator [, int $enc_type = PHP_QUERY_RFC1738 ]]] )
~~~
使用給出的關聯(或下標)數組生成一個經過 URL-encode 的請求字符串。
### 參數
`query_data`
可以是數組或包含屬性的對象。
一個 query_data 數組可以是簡單的一維結構,也可以是由數組組成的數組(其依次可以包含其它數組)。
如果 query_data 是一個對象,只有 public 的屬性會加入結果。
`numeric_prefix`
如果在基礎數組中使用了數字下標同時給出了該參數,此參數值將會作為基礎數組中的數字下標元素的前綴。
這是為了讓 PHP 或其它 CGI 程序在稍后對數據進行解碼時獲取合法的變量名。
`arg_separator`
除非指定并使用了這個參數,否則會用 arg_separator.output 來分隔參數。
`enc_type`
默認使用 PHP_QUERY_RFC1738。
如果 enc_type 是 PHP_QUERY_RFC1738,則編碼將會以 ? RFC 1738 標準和 application/x-www-form-urlencoded 媒體類型進行編碼,空格會被編碼成加號(+)。
如果 enc_type 是 PHP_QUERY_RFC3986,將根據 ? RFC 3986 編碼,空格會被百分號編碼(%20)。
### 返回值
>[success]返回一個 URL 編碼后的字符串。
>
## `parse_url`
>[success]本函數解析一個 URL 并返回一個關聯數組,包含在 URL 中出現的各種組成部分。
>本函數不是用來驗證給定 URL 的合法性的,只是將其分解為下面列出的部分。不完整的 URL 也被接受,parse_url() 會嘗試盡量正確地將其解析。
>
>[info](PHP 4, PHP 5, PHP 7)
parse_url — 解析 URL,返回其組成部分
### 語法
~~~
mixed parse_url ( string $url [, int $component = -1 ] )
~~~
### 參數
`url`
要解析的 URL。無效字符將使用 _ 來替換。
`component`
指定 PHP_URL_SCHEME、 PHP_URL_HOST、 PHP_URL_PORT、 PHP_URL_USER、 PHP_URL_PASS、 PHP_URL_PATH、 PHP_URL_QUERY 或 PHP_URL_FRAGMENT 的其中一個來獲取 URL 中指定的部分的 string。 (除了指定為 PHP_URL_PORT 后,將返回一個 integer 的值)。
### 實例
- 前言
- PHP獲取服務器信息
- PHP中的常用函數-新手必備知識
- 日期時間相關的函數
- 時區設置
- time函數
- strtotime 時間戳
- date函數
- mktime函數
- 聯合使用 date() 和 mktime()
- PHP數據類型相關的函數
- PHP數組相關的函數
- array函數
- 數組的排序
- sort()和rsort()函數
- asort()和arsort()函數
- ksort()和krsort()函數
- array_multisort()函數
- array_reverse函數
- 數組的遍歷
- 數組中新增和刪除元素
- 數組頭部插入和刪除元素
- 數組尾部插入和刪除元素
- 刪除數組中重復的元素
- 刪除數組中指定的元素
- 數組的合并
- 隨機/打亂已知數組
- range函數
- 數組去除重復
- PHP常用功能函數
- URL地址處理函數
- post/get請求
- PHP字符串相關的函數
- PHP文件系統
- PHP正則表達式
- 正則表達式語法規則
- POSIX擴展的正則表達式函數
- 查找字串函數
- 替換字符串函數
- Perl兼容的正則表達式函數
- PHP中類的應用
- 中文編碼
- 關于stdClass
- 變量相關函數
- unset
- PHP數值相關的函數
- 數值取整
- 開發工具與開發環境使用技巧
- sublime
- 常用插件
- Atom
- 常用插件
- 常見問題
- Visual Studio Code
- vscode常用插件
- 編程推薦字體
- MAC下開發常識
- MAC下的常用設置
- MAC下的常用開發工具
- MAC下XAMMP的常見問題
- Apache配置基礎
- PhpStrom
- php中的常見問題
- 文件上傳相關問題
- API接口中常見問題
- 關于緩沖區問題
- PHP中注意事項
- 條件判斷
- PHP文件管理模塊
- 文件管理源碼
- 文件管理的常用函數
- 文件管理中文亂碼處理
- 自定義功能函數
- 文件下載
- PHP常用頭信息定義匯總
- 常見PHP網頁木馬
- 加密算法
- 1. Base58可逆加密
- 2. AES加密/解密
- mysql數據庫操作
- 命令行操作Mysql常用令行-查詢
- 命令行操作Mysql常用令行-操作
- Mysql使用中的技巧
- 在線數據庫管理中常用命令
- sql show命令
- mysql數據庫的備份與恢復
- 二進制日志介紹
- 二進制日志常用命令
- ThinkPHP
- 數據遷移
- 常見問題
- 驗證碼問題
- API接口中的異常處理
- API接口安全
- 解決跨域問題
- 自定義實用功能函數