• PHP模拟发送POST请求之二、用PHP和JS处理URL信息


    明白了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      查询字符串

  • 相关阅读:
    java处理高并发高负载类网站的优化方法
    谈谈Memcached与Redis
    php中const与define的使用区别 详解
    ecshop添加模板与库文件
    ECShop 2.5.1 的结构图及各文件相应功能介绍
    Uva10972(RevolC FaeLoN)
    交叉染色法判断二分图
    边双联通问题求解(构造边双连通图)POJ3352(Road Construction)
    POI1999(仓库管理员)
    ZOJ1311(Network)
  • 原文地址:https://www.cnblogs.com/zhenbianshu/p/4931601.html
Copyright © 2020-2023  润新知