一、javascript:代码:

/*@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' }二、php:代码(自带):

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"}