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

来源:互联网 时间:1970-01-01

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

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

其函数原型如下:

arrayparse_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:[email protected]: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:[email protected]: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 查询字符串



相关阅读:
Top