php中的url解析

来源:互联网 发布:php中输入html 编辑:程序博客网 时间:2024/06/07 06:41

parse_url解析 URL,返回其组成部分;

arrayparse_url ( string$url )

本函数解析一个 URL 并返回一个关联数组,包含在 URL 中出现的各种组成部分。本函数不是用来验证给定 URL 的合法性的,只是将其分解为下面列出的部分。不完整的 URL 也被接受,parse_url() 会尝试尽量正确地将其解析。

e.g.

<?php 

//GBK下的“百度”编码;

$query=urlencode("百度");

echo "GBK汉字'百度'的URL编码为:百分号跟随16进制数制以对应ASCII字符:".$query.'<br>';

//实际搜索“百度”关键字产生的URL;

$url="http://www.baidu.com/s?bs=url%BD%E2%CE%F6&f=8&rsv_bp=1&wd=%B0%D9%B6%C8&inputT=3047";

$component=parse_url($url);

echo "解析这个地址得到的结果:";

var_dump($component);

?>

输出结果为:

GBK汉字'百度'的URL编码为:百分号跟随16进制数制以对应ASCII字符:%B0%D9%B6%C8
解析这个地址得到的结果:

array'scheme' =>string'http'(length=4)'host' =>string'www.baidu.com'(length=13)'path' =>string'/s'(length=2)'query' =>string'bs=url%BD%E2%CE%F6&f=8&rsv_bp=1&wd=%B0%D9%B6%C8&inputT=3047'(length=59)

返回一个数组:

对严重不合格的 URL,parse_url() 可能会返回 FALSE 并发出 E_WARNING。否则会返回一个关联数组,其组成部分为(至少有一个):

  • scheme - 如 http
  • host
  • port
  • user
  • pass
  • path
  • query - 在问号 ? 之后  
  • fragment - 在散列符号 # 之后 

http_build_query — 生成 URL-encode 之后的请求字符串

stringhttp_build_query ( array$formdata [, string$numeric_prefix ] )

使用给出的关联(或下标)数组生成一个经过 URL-encode 的请求字符串。参数 formdata 可以是数组或包含属性的对象。一个 formdata 数组可以是简单的一维结构,也可以是由数组组成的数组(其依次可以包含其它数组)。

如果在基础数组中使用了数字下标同时给出了 numeric_prefix 参数,此参数值将会作为基础数组中的数字下标元素的前缀。

这是为了让 PHP 或其它 CGI 程序在稍后对数据进行解码时获取合法的变量名。 

e.g.

<?php 

$query=array(array('百度'=>'baidu','google'=>'谷歌','yahoo'=>'雅虎','腾迅'=>'tencent','搜狐'=>'sohu'),array(1,2,3));

echo http_build_query($query,'---door---');

?>

输出结果为:
---door---0%5B%B0%D9%B6%C8%5D=baidu&---door---0%5Bgoogle%5D=%B9%C8%B8%E8&---door---0%5Byahoo%5D=%D1%C5%BB%A2&---door---0%5B%CC%DA%D1%B8%5D=tencent&---door---0%5B%CB%D1%BA%FC%5D=sohu&---door---1%5B0%5D=1&---door---1%5B1%5D=2&---door---1%5B2%5D=3
输出结果为以数组的前缀"---door---" + 数字下标+数组项+& ,如果不设置prefix ,刚只有数字下标。如无数字下标,即数组键名都为字符,则只有"键名=键值&"。