TreeviewCopyright © aleen42 all right reserved, powered by aleen42
URL相关
parse_str — 将字符串解析成多个变量
语法
void parse_str( string $str, array &$arr )
描述
- 如果 str 是 URL 传递入的查询字符串(query string),则将它解析为变量并设置到当前作用域
参数
参数 | 描述 |
---|---|
str | 输入的字符串 |
arr | 第二个变量 arr,变量将会以数组元素的形式存入到这个数组,作为替代 |
返回值
- 没有返回值
举例
// 示例
$string = 'name=zhangsan&age=18&email=google@qq.com';
parse_str($string,$params);
print_r($params);
// 结果
Array
(
[name] => zhangsan
[age] => 18
[email] => google@qq.com
)
parse_url — 解析 URL,返回其组成部分
语法
mixed parse_url( string $url[, int $component = -1] )
描述
- 本函数解析一个 URL 并返回一个关联数组,包含在 URL 中出现的各种组成部分
- 本函数不是用来验证给定 URL 的合法性的,只是将其分解为下面列出的部分。不完整的 URL 也被接受,parse_url() 会尝试尽量正确地将其解析
参数
参数 | 描述 |
---|---|
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 的值)。 |
返回值
- 对严重不合格的 URL,parse_url() 可能会返回 FALSE。
- 如果省略了 component 参数,将返回一个关联数组 array,在目前至少会有一个元素在该数组中。数组中可能的键有以下几种
scheme - 如 http
◦ host
◦ port
◦ user
◦ pass
◦ path
◦ query - 在问号 ? 之后
◦ fragment - 在散列符号 # 之后 - 如果指定了 component 参数, parse_url() 返回一个 string (或在指定为 PHP_URL_PORT 时返回一个 integer)而不是 array。如果 URL 中指定的组成部分不存在,将会返回 NULL
举例
// 示例1-一般使用
$url = 'https://www.codeshort.cn/bookrack';
$result = parse_url($url);
print_r($result);
// 结果
Array
(
[scheme] => https
[host] => www.codeshort.cn
[path] => /book
)
// 示例2-指定返回参数
$url = 'https://www.codeshort.cn/bookrack';
$result = parse_url($url,PHP_URL_HOST);
print_r($result);
// 结果
www.codeshort.cn
// 示例3-拥有完整的URL的解析
$url = 'http://username:password@hostname/path?arg=value&age=22#anchor';
$result = parse_url($url);
print_r($result);
// 结果
Array
(
[scheme] => http
[host] => hostname
[user] => username
[pass] => password
[path] => /path
[query] => arg=value&age=22
[fragment] => anchor
)
pathinfo — 返回文件路径的信息
语法
mixed pathinfo( string $path[, int $options = PATHINFO_DIRNAME | PATHINFO_BASENAME | PATHINFO_EXTENSION | PATHINFO_FILENAME] )
描述
- pathinfo() 返回一个关联数组包含有 path 的信息。返回关联数组还是字符串取决于 options
参数
参数 | 描述 |
---|---|
path | 要解析的路径 |
options | 如果指定了,将会返回指定元素;它们包括:PATHINFO_DIRNAME,PATHINFO_BASENAME 和 PATHINFO_EXTENSION 或 PATHINFO_FILENAME。如果没有指定 options 默认是返回全部的单元 |
返回值
- 如果没有传入 options ,将会返回包括以下单元的数组 array:dirname,basename 和 extension(如果有),以 及filename
举例
// 示例1-一般使用
$result = pathinfo('./NewArray.php');
print_r($result);
// 结果
Array
(
[dirname] => .
[basename] => NewArray.php
[extension] => php
[filename] => NewArray
)
// 示例2-获取指定参数
$result = pathinfo('./NewArray.php',PATHINFO_EXTENSION);
print_r($result);
// 结果
php
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)。 |
返回值
- 返回一个 URL 编码后的字符串
举例
// 示例1-一般使用
$data['name'] = 'zhangsan';
$data['age'] = 22;
$data['email'] = 'google@qq.com';
$result = http_build_query($data);
echo $result;
// 结果
name=zhangsan&age=22&email=google%40qq.com
// 示例2-指定数字索引的前缀
$data['name'] = 'zhangsan';
$data['age'] = 22;
$data['email'] = 'google@qq.com';
$data[] = 'index';
$result = http_build_query($data);
echo $result;
$data['name'] = 'zhangsan';
$data['age'] = 22;
$data['email'] = 'google@qq.com';
$data[] = 'index';
$result = http_build_query($data,'PRE_');
// 结果
name=zhangsan&age=22&email=google%40qq.com&0=index
name=zhangsan&age=22&email=google%40qq.com&PRE_0=index
// 示例3-指定连接符号
$data['name'] = 'zhangsan';
$data['age'] = 22;
$data['email'] = 'google@qq.com';
$data[] = 'index';
$result = http_build_query($data,'PRE_','@');
echo $result;
// 结果
name=zhangsan@age=22@email=google%40qq.com@PRE_0=index
// 示例4-指定编码类型
$data['name'] = 'zhangsan';
$data['age'] = 22;
$data['email'] = 'google@qq.com';
$data['empty'] = ' ';
$result = http_build_query($data,null,'@');
echo $result;
$data['name'] = 'zhangsan';
$data['age'] = 22;
$data['email'] = 'google@qq.com';
$data['empty'] = ' ';
$result = http_build_query($data,null,'@',PHP_QUERY_RFC3986);
echo $result;
// 结果
name=zhangsan@age=22@email=google%40qq.com@empty=+
name=zhangsan@age=22@email=google%40qq.com@empty=%20
urlencode — 编码 URL 字符串
语法
string urlencode( string $str)
描述
- 此函数便于将字符串编码并将其用于 URL 的请求部分,同时它还便于将变量传递给下一页
参数
参数 | 描述 |
---|---|
str | 要编码的字符串 |
返回值
- 返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)。
- 此编码与 WWW 表单 POST 数据的编码方式是一样的,同时与 application/x-www-form-urlencoded 的媒体类型编码方式一样。
- 由于历史原因,此编码在将空格编码为加号(+)方面与 » RFC3896 编码(参见 rawurlencode())不同
举例
// 示例
$url = 'https://www.codeshort.cn/bookrack';
$result = urlencode($url);
echo $result;
// 结果
https%3A%2F%2Fwww.codeshort.cn%2Fbook
urldecode
语法
string urldecode( string $str)
描述
- 解码给出的已编码字符串中的任何 %##。加号('+')被解码成一个空格字符
参数
参数 | 描述 |
---|---|
str | 要解码的字符串 |
返回值
- 返回解码后的字符串
举例
// 示例
$url = 'https%3A%2F%2Fwww.codeshort.cn%2Fbook';
$result = urldecode($url);
echo $result;
// 结果
https://www.codeshort.cn/bookrack