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

results matching ""

    No results matching ""