明白了HTTP请求的头信息后,我们还需要对请求地址有所了解。再者,HTTP GET请求是靠URL实现的,所以了解URL的构造,处理URL的重要性不言而喻。

在PHP中我们用parse_url()函数来处理URL信息。

其函数原型如下:

array parse_url ( string $url [,URL_COSTANT])

本函数解析一个 URL 并返回一个关联数组,包含在 URL 中出现的各种组成部分。

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

其正确的返回值如下:

 scheme  http 协议信息 

 host   主机信息 

 port   端口号

 user   用户名

 pass   密码

 path  站内路径

 query  在问号 ? 之后的查询信息  

 fragment  在散列符号 # 之后 锚点信息 Hash信息

下面是一个典型的URL字符串,我们对其用parse_url()解析,并输出其结果数组。

$url='https://zbs:mypass@www.baidu.com:8080/home/index.html?gender=male&write=code#anchor';

$arr=parse_url($url);

array (size=8)

'scheme' => string 'https' 

'host' => string 'www.baidu.com' 

'port' => int 8080

'user' => string 'zbs' 

'pass' => string 'mypass' 

'path' => string '/home/index.html' 

'query' => string 'gender=male&write=code' 

'fragment' => string 'anchor'

另外,我们还可以对第二个参数赋值,指定要返回的URL部分,对应的URL_CONST取值如下:

scheme:PHP_URL_SCHEME,

host:PHP_URL_HOST,

port:PHP_URL_PORT,

user:PHP_URL_USER,

pass:PHP_URL_PASS,

path:PHP_URL_PATH,

query:PHP_URL_QUERY,

fragment:PHP_URL_FRAGMENT.

例如我们要指定返回地址的查询字段信息:

$url='https://zbs:mypass@www.baidu.com:8080/home/index.html?gender=male&write=code#anchor';

$arr=parse_url($url,PHP_URL_QUERY);//string '/home/index.html

理解了如何拆分URL信息后,我们也更需要学会拼合URL信息,拼合URL信息有一个专门的函数http_build_url(),但此函数因其处理繁琐,一般较少使用,我们常用字符串来拼合URL,在处理较多的查询信息(query_string)时,我们会用http_build_query()函数。

http_build_query()函数能帮我们将一个关联数组快速拼合成一个查询字符串,它甚至可以将一个对象分析拼合为一个查询字符串,但要注意,它只能保留修饰符为"public"的"属性",其余信息将会被舍弃。

例:

$info=['run'=>'10km','eat'=>'3kg'];

var_dump(http_build_query($info));//string 'run=10km&eat=3kg'

class Msg{

  public $attr_public="value_public";

  protected $attr_protected="value_protected";

  private $attr_private="value_private";

  function foo(){

    echo "foo";

  }

}

$msg=new Msg();

var_dump(http_build_query($msg));//string 'attr_public=value_public'

另:JS获取当前url信息:

Location 对象是 Window 对象的一个部分,可通过 window.location 属性来访问,它包含了有关当前 URL 的信息。

Location 对象属性

属性       描述

hash     URL锚点信息

host     主机名和当前 URL 的端口号

hostname  当前URL的主机名

href     完整的URL

pathname    当前URL的路径部分

port         当前URL的端口号

protocol   当前URL的协议

search      查询字符串

最新文章

  1. Kinect2.0 for Mac开箱
  2. CentOS 配置防火墙操作实例(启、停、开、闭端口)
  3. viewpaper 抽屉
  4. MVC模式简介
  5. asp.net 中给gridview添加自动序号
  6. 在客户环境定位.net程序异常
  7. 使用mysqlbinlog工具进行基于位置或时间点的数据恢复
  8. Reader开发(二)增加PDF阅读功能
  9. 【Python】 list & dict & str
  10. leetcode 链表相关
  11. Centos7下安装OpenLDAP+Phpldapadmin及主主同步
  12. 用xcode9编译出ios越狱机程序使用的dylib
  13. Python——rrdtool模块的安装
  14. SpringMvc @ResponseBody字符串中文乱码原因及解决方案
  15. VIM vim/vi的文件内、跨文件复制粘贴操作、替换操作
  16. 集成Glide4.3.1出错!AbstractMethodError: abstract method "void com.bumptech.glide.module
  17. JavaScript中对象与函数的某些事[JavaScript语言精粹-N1]
  18. 巧妙利用SVN 实现复制需要部署的文件。
  19. JavaScript学习总结(一)——JavaScript基础
  20. hdu 1253 胜利大逃亡 (代码详解)解题报告

热门文章

  1. adaboost原理和实现
  2. Installation and Upgrading
  3. jquery ajax给外部变量赋值 async: false
  4. win7局域网里输入正确密码也访问不了其他的机器
  5. 配置ssh免密码连接
  6. mysqli连接数据库常见函数
  7. Android应用开发基础之六:页面跳转和数据传递
  8. 利用ng-click、ng-switch和click-class制作切换的tabl
  9. absolute绝对定位可以实现相对定位
  10. Smartforms常见问题