php中url函数介绍及使用示例
base64_encode — 使用 mime base64 对数据进行编码
base64_encode() returns 使用 base64 对 data 进行编码。设计此种编码是为了使二进制数据可以通过非纯 8-bit 的传输层传输,例如电子邮件的主体。
base64-encoded 数据要比原始数据多占用 33% 左右的空间。
<?php
$str = 'this is an encoded string';
// vghpcybpcybhbiblbmnvzgvkihn0cmluzw==
echo base64_encode($str);
?>
base64_decode — 对使用 mime base64 编码的数据进行解码
base64_decode() 对 encoded_data 进行解码,返回原始数据,失败则返回 false。返回的数据可能是二进制的。
<?php
$str = 'vghpcybpcybhbiblbmnvzgvkihn0cmluzw==';
// this is an encoded string
echo base64_decode($str);
?>
get_headers — 取得服务器响应一个 http 请求所发送的所有标头
get_headers() 返回一个数组,包含有服务器响应一个 http 请求所发送的标头。如果失败则返回 false 并发出一条 e_warning 级别的错误信息。
如果将可选的 format 参数设为 1,则 get_headers() 会解析相应的信息并设定数组的键名。
<?php
$phpha1 = get_headers('//www.jb51.net');
$phpha2 = get_headers('//www.jb51.net', 1);
print_r($phpha1);
print_r($phpha2);
?>
输出如下:
array
(
[0] => http/1.1 200 ok
[1] => server: nginx/1.2.2
[2] => date: tue, 06 nov 2012 10:17:59 gmt
[3] => content-type: text/html; charset=utf-8
[4] => connection: close
[5] => x-powered-by: php/5.3.8
[6] => x-pingback: //www.jb51.net/xmlrpc.php
[7] => via: 10.67.15.26
[8] => set-cookie: saeut=124.127.138.35.1352197078737175; path=/; max-age=311040000
)
array
(
[0] => http/1.1 200 ok
[server] => nginx/1.2.2
[date] => tue, 06 nov 2012 10:17:59 gmt
[content-type] => text/html; charset=utf-8
[connection] => close
[x-powered-by] => php/5.3.8
[x-pingback] => //www.jb51.net/xmlrpc.php
[via] => 10.67.15.21
[set-cookie] => saeut=124.127.138.35.1352197079055460; path=/; max-age=311040000
)
get_meta_tags — 从一个文件中提取所有的 meta 标签 content 属性,返回一个数组
可以想象的到,某些网站可以方便的用此函数进行网站seo信息的提取。
<?php
//天涯php博客 //www.jb51.net
$phpha = get_meta_tags('//www.jb51.net');
print_r($phpha);
?>
输出如下:
array
(
[keywords] => 天涯博客,php博客,php技术博客,php学习博客,php开发博客
[description] => 天涯php博客是以php为主的学习博客,记载phper的学习历程,关注互联网最新发展动态。
[generator] => wordpress 3.2.1
)
http_build_query — 生成 url-encode 之后的请求字符串
<?php
$url = array('c'=>'blog', 'a'=>'show', 'id'=>10, 'hello', 'world');
// c=blog&a=show&id=10&0=hello&1=world
echo http_build_query($url);
// c=blog&a=show&id=10&phpha_0=hello&phpha_1=world
echo http_build_query($url, 'jb51_');
?>
[/code]
这个函数目前我用的最多的地方就是做各种api时,组合请求的url,非常的方便。
另外可以看到,对于数组内数字索引的成员,还可以指定前缀。
parse_url — 解析 url,返回其组成部分
本函数解析一个 url 并返回一个关联数组,包含在 url 中出现的各种组成部分。本函数不是用来验证给定 url 的合法性的,只是将其分解为下面列出的部分。不完整的 url 也被接受,parse_url() 会尝试尽量正确地将其解析。
<?php
$url = 'http://tianya:jb51.net@jb51.com/hello.php?id=10#nav';
print_r(parse_url($url));
?>
array
(
[scheme] => http
[host] => phpha.com
[user] => tianya
[pass] => phphadotcom
[path] => /hello.php
[query] => id=10
[fragment] => nav
)
rawurlencode — 按照 rfc 1738 对 url 进行编码
rawurldecode — 对已编码的 url 字符串进行解码
urlencode — 编码 url 字符串
urldecode — 解码已编码的 url 字符串
<?php
$url = '//www.jb51.net tianya';
echo urlencode($url);
echo '<br />';
echo rawurlencode($url);
echo '<br />';
echo urldecode($url);
echo '<br />';
echo rawurldecode($url);
?>
输出如下:
http%3a%2f%2fwww.jb51.net+tianya
http%3a%2f%2fwww.jb51.net%20tianya
可以看到,urlencode与rawurlencode的区别在于:
urlencode() 会把空格编码为加号(+),rawurlencode() 则把空格编码为 %20
urldecode()和rawurldecode() 则为对应的解码函数。
推荐阅读