/*
@desc:url解析函数
@author <lee> [<complet@163.com>]
@param url 要查询的url
@return ret 解析后的对象
*/
function parseurl(url){
var reg = /(?:([A-Za-z]+):)?(\/{0,3})?(?:(.*):(.*)@)?([0-9.\-A-Za-z]+)(?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?/
var res = reg.exec(url)
var scheme = (res[1])?res[1]:‘http‘
var user = (res[3])?res[3]:‘‘
var pass = (res[4])?res[4]:‘‘
var host = (res[5])?res[5]:‘‘
var port = (res[6])?res[6]:‘‘
var path = (res[7])?res[7]:‘‘
var query = (res[8])?res[8]:‘‘
var fragment = (res[9])?res[9]:‘‘
var ret = {
scheme:scheme,
user:user,
pass:pass,
host:host,
port:port,
path:path,
query:query,
fragment:fragment
}
return ret
}
var url = "https://user:pass@www.baidu.com:80/a/b/?name=lee&sex=male#id";
var ret = parseurl(url)
console.log(ret)
{ scheme: ‘https‘,
user: ‘user‘,
pass: ‘pass‘,
host: ‘www.baidu.com‘,
port: ‘80‘,
path: ‘a/b/‘,
query: ‘name=lee&sex=male‘,
fragment: ‘id‘ }
parse_url()
<?php
$url = "http://user:pass@www.baidu.com:80/a/b?name=lee&sex=male#id";
$ret = parse_url($url);
var_dump($ret);
array(8) {
["scheme"]=>
string(4) "http"
["host"]=>
string(13) "www.baidu.com"
["port"]=>
int(80)
["user"]=>
string(4) "user"
["pass"]=>
string(4) "pass"
["path"]=>
string(4) "/a/b"
["query"]=>
string(17) "name=lee&sex=male"
["fragment"]=>
string(2) "id"
}
原文地址:http://blog.51cto.com/12173069/2126496