两个关于URL解析的例子
例一:
/*
解析URL查寻串中的name=value参数对
将name=value对存储在对象属性中,并返回对象
alert(getQuery().name)
*/
function getQuery(){
var obj={}; //定义一个空对象
var arr=location.search.substring(1).split('&');//获取查寻参数
for(var i=0;i<arr.length;i++)
{
if(arr[i].indexOf('=')==-1) //如果没找到就跳过
continue;
else
{
arr[i]=arr[i].split('=');
obj[arr[i][0]]=arr[i][1]; //存储为对象属性
}
}
return obj; //返回解析后的参数
}
例二:
/*
解析一个url,并生成window.location对象中包含的域
href:'包含完整的url',
origin:'包含协议到pathname之前的内容',
protocol:'url使用的协议,包含末尾的:',
host:'完整主机名,包含:和端口',
hostname:'主机名,不包含端口',
port:'端口号',
pathname:'服务器上访问资源的路径/开头',
search:'query string,?开头',
hashs:'#开头的fragment identifier'
@param{string} url需要解析的url
@return{Object} 包含url信息的对象
*/
function parseURL(url){
var result={};
var keys=['href','origin','protocol','host','hostname','port','pathname','search','hashs'];
var i,len;
//$1:(([^:]+:)\/\/(([^:\/\?#]+)(:\d+)?))
//$2:([^:]+:)
//$3:(([^:\/\?#]+)(:\d+)?)
//$4:([^:\/\?#]+)
//$5:(:\d+)?
//$6:(\/[^?#]*)?
//$7:(\?[^#]*)?
//$8:(#.*)?
var reg=/(([^:]+:)\/\/(([^:\/\?#]+)(:\d+)?))(\/[^?#]*)?(\?[^#]*)?(#.*)?/;
var matchs=reg.exec(url);
if(matchs){
for(i=keys.length-1;i>=0;i--){
result[keys[i]]=matchs[i]?matchs[i]:'';
}
}
return result;
}
两个关于URL解析的例子的更多相关文章
- 「Python 编程」编码实现网络请求库中的 URL 解析器
摘要:怎么写出更短的代码并不是这次要讨论的话题.今天我们来研究一下:运行代码的计算机是如何找到目标服务器的? 相信各位 Python 开发者都用过 Requests 库,有些朋友还用过 WebSock ...
- 简单的URL解析
简单的URL解析,直接举例说明了 function getUrl(){ //如果存在则取到来后面的参数,注意,?不需要取出,substring从1开始,否则取""; var qs ...
- ThinkPHP中URL解析原理,以及URL路由使用教程!
几个概念: THINKPHP 是一个MVC框架,使用PATHINFO解析出分组名,模块名,方法名,以及参数. PATHINFO:就是 http://localhost/index.php/Home/I ...
- Django的url解析
Django中采用正则表达式来匹配所请求的url,这个叫做URLconf,作为MVC中的C(控制器), 这样再调用相应的试图,达到控制器控制试图的显示的效果. 看一下Django的url解析过程 第一 ...
- 百度url解析Joe.Smith整理大全
百度url解析Joe.Smith整理大全 百度url解析Joe.Smith整理大全...1 本文链接:http://blog.csdn.net/qq_26816591/article/details/ ...
- jsp页面获取参数的方法(url解析、el表达式赋值、session取值)【原创】
最近使用myEclispse做网站,使用jsp+js+css做页面,网站中常用到从列表进入详情页面的跳转,下面对详情页面的值填充方式做一个简单总结: 1.url中使用request获取参数 jsp上方 ...
- 用正则把url解析为对象
用正则把url解析为对象 <!DOCTYPE html><html><head><meta charset="utf-8">< ...
- [转帖]kubernetes ingress 在物理机上的nodePort和hostNetwork两种部署方式解析及比较
kubernetes ingress 在物理机上的nodePort和hostNetwork两种部署方式解析及比较 https://www.cnblogs.com/xuxinkun/p/11052646 ...
- 关于Qt5(1)-- 两个窗口互相切换的例子
<QT Creator快速入门>这本书有一章介绍model和modeless的概念时,用到了两个窗口互相切换的例子.但是原文对该例子的说明非常模糊不清,现整理如下. 1,要求:登陆界面.主 ...
随机推荐
- PHP写的手机端网站,可以打包成app吗,怎么打包?
8:13:36 沐歌-重庆 2018/1/19 8:13:36 PHP写的手机端网站,可以打包成app吗,怎么打包 风太大-淮安 2018/1/19 8:14:58 变色龙 沐歌-重庆 一般用什么打包 ...
- 3d之ui快速切换图像
Requirement canon相机continuous mode(Burst mode) 抓图variation (230~320ms) 1. python + opencv 用cvWaitKey ...
- async(await)知识点
async 函数是 Generator 函数的语法糖. async 函数对 Generator 函数的改进体现在: async 内置执行器. Generator 函数的执行必须靠执行器,需要调用 ne ...
- DHCP服务器备份、还原、迁移
备份DHCP服务器 $today = get-date $todayu = get-date -format 'yyyyMMdd' #备份DHCP数据库,用于还原到本地 Backup-DhcpServ ...
- SQL 实践和技巧 <2>
转自 http://i.cnblogs.com/EditPosts.aspx?opt=1 几个小技巧 (1)||的使用: select ‘(‘||phone[1,3]||’)’phone[5, ...
- Hadoop高级培训课程大纲-管理员版
一.课程概述 本次培训课程主要面向大数据系统管理人员和开发设计人员,基于开源社区大数据应用最活跃的Hadoop和HBase技术框架.围绕分布式文件存储(HDFS).分布式并行计算(Map/Recue) ...
- windows下elasticsearch配置及spring boot 简单demod的 整合
学习过程: elasticsearch 下载安装 elasticsearch-head 安装 spring boot 下elasticsearch的配置 使用ElasticsearchReposito ...
- 开发框架:IOE 架构
ylbtech-开发框架:IOE 架构 传统的IOE架构(IBM小型机.EMC存储设备.Oracle数据库). 1.返回顶部 2.返回顶部 3.返回顶部 4.返回顶部 5.返回顶部 ...
- VMware新建虚拟机
VMware作为一个非常便捷的虚拟机软件,学会简单的使用方法,对试验非常有帮助. 1. 打开VM,选择“创建新的虚拟机” 2. 选择典型: 3. 选择稍后选择安装源: 4. 选择Linux,并选择Li ...
- linux下安装jdk7
查看linux系统是32位还是64位系统:uname --mi686 //表示是32位x86_64 // 表示是64位新建一个jdk的安装目录,我这里是在/usr/local/下新建了java目录,命 ...