ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 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 的值)。 ### 实例