使用正则表达式优化网页代码

  正则表达式最早在perl语言中出现,在此之前为了测试字符串中是否存在某个字符,不得不使用如ChatAt()、indexOf()等函数对字符串循环校验。一旦验证的条件复杂起来(比如身份证校验)实现就变得相当繁杂和艰巨。为此人们就发明了正则语法,使用一个特殊的字符串作为模板,对输入的字符流进行匹配,这跟电子厂的PCB板检测原理很相似。正则表达式在不同工具中实现方式虽然有点不同,但表达语法相同,一般都遵循了ECMPScript 的RegExp类语法标准,具体可以查看,《ECMAScript Language Specification》中有关RegExp的描述,如果想深入了解正则表达式,http://www.regular-expressions.info/是个不错的网站。
       网页代码优化的最主要工作的就是对页面源代码的简化。对于用网页工具或其他转换工具(比如Word—>Html)制作的网页,简化与未简化的网页大小相差往往在一倍以上。别小看简化的作用,对于目前的互联网带宽来说,将50kb的页面缩小成20kb可能感觉不到浏览速度的提升,但对小型手持设备如手机、PDA来说,这是非常致命的,不仅是带宽的问题,页面代码越多,浏览器解析与导航(定位)的速度就越慢,消耗的内存也越厉害。网页代码的精简程度是衡量网页设计人员水平高低的一个重要标准。
闲话说了这么多,现在进入正题。代码简化工作是通过对文本进行“查找替换”实现的。普通的全字符串匹配的查找替换可以帮我们完成大部分的代码简化功能,对于有条件的简化,必须使用正则表达式进行处理。基本上带有文本编辑功能的编辑器(比windows写字板高级点的)都带有支持正则表达式的“查找替换”功能。由于是对网页代码进行优化,因此我们还是使用专门的DreamWeaver或FrontPage进行操作。这两个工具都带有html代码优化功能,但基本上都不能满足我们的要求。而且优化的功能都可以通过使用正则表达式进行实现。FrontPage正则表达式的很多标记跟标准的不同(真不明白ms为什么老是要自己搞另外一套-_-!!),这里我只介绍适合DreamWeaver的方法。
应用一:删除空白标签
像<span></span>、<b></b>这类页面编辑后遗留的空白标签是可以清理的,但要注意的是,在一些应用中(如ajax的回显)可能会用到一些有id属性的空白标签。
查找 替换
<(.*)/b.*?>/s*<//1>  

 
用这个也可以删除一些不必要的标签,只要/s*替换成捕获组:
查找 替换
<(.*)/b.*?>((?:[^<//1]|/s)*)<//1> $2

记得把.*换成你要替换的标签,另外它无法处理嵌套的标签。但变更一下,可以处理嵌套带不同属性的相同标签。
 
应用二:删除文本中的html标签
查找 替换
<(?:.|/s)*?>  

 
应用三:删除多余的空白
比如把<div id=””   >替换为<div id=””>
查找 替换
/s{2,} (一个空格)
/s{1,}(.|/)> $1>

 
应用四:标签合并
比如把<b><b>abc</b>defedd</b>替换成<b>abcdefedd</b>
对多层嵌套的结构必须一步步“脱壳”:
 
查找 替换
(<(.*)/b.*?>)((?:[^</2]|/s)*?)/1((?:.|/s)*?)<//2>((?:.|/s)*?)<//2> <$2>$3$4$5</$2>

这个方法一次只能合并一个内嵌标签,要多替换几次。
最好指定(.*)中.*代表的具体标签,避免合并了不该合并的标签。比如b或font,如果要合并带属性的标签,只需要把<(.*)/b.*?>改成<(.|/s)*?>就可以了。
 
应用五:将具有特定属性的标签用css引用简化
假设要把
<td bgcolor=”#FFFFFF” width=”20px”>换成
<td bgcolor=”#FFFFFF” class=”style1”>
查找 替换
<(.*)/b(.*)width="20px"((.|s)*)> <$1 $2 class=”style1” $3>

 
你需要将.*换成要处理的标签。
举一反三,我们可以把width=”20px”的td加宽2倍
查找 替换
<(.*)/b(.*)width="20px"((.|s)*)> <$1 $2 width="40px"$3>

 
应用六:删除html注释
查找 替换
<!(.|/s)*?>  
<!--(.|/s)*?-->  

 
以上是几个正则表达式在简化代码方面的简单例子,这里虽然只讲如何进行网页代码的优化,但实际上正则表达式的作用远不只如此,只要发挥我们的想象力,正则表达式在文本编辑领域必大有所为。
值得一提的是,在FrontPage的“查找替换”功能中,有个“HTML规则”和“HTML标记”的功能,方便了我们对html代码进行编辑,适合对正则表达式不熟悉的人使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本书展示一个完整网站的设计和实现过程,详细地介绍动态网页设计和制作的技术和相关理论,全书共分为8章,主要内容包括:动态网站设计概述、动态网站编程环境、网站主页设计与PHP基础、网站计数器设计与PHP文件访问、会员注册和管理设计与数据获取、网上社区设计与PHP数据库访问、网上购书与PHP面向对象技术、网站优化与PHP的高级功能等,本书内容系统全面,案例典型实用,讲述直观详尽,非常适合动态网页设计与制作的初学者使用,还可作为高等院校教材和“实用型”人才培训教材。 目录 第1章 动态网站设计概述 1.1 动态网站的特点 1.2 动态网站的运行机制 1.2.1 域名 1.2.2 网页 1.2.3 浏览器 1.2.4 服务器 1.3 动态网站的规划 1.3.1 确定网站的类型 1.3.2 确定网站的主题 1.3.3 确定网站的整体风格 1.3.4 确定网站的内容 1.3.5 规划界面 1.3.6 规划站点的目录结构和链接结构 1.3.7 编写网站策划书 1.4 动态网站开发前的准备 1.4.1 申请域名 1.4.2 接入Internet 1.4.3 选择软硬件平台 1.4.4 选择网站建设服务商 第2章 动态网站编程环境 2.1 动态网页编程环境的构成要素 2.1.1 操作系统 2.1.2 服务器端程序 2.1.3 程序语言 2.1.4 数据库 2.1.5 基于PHP常见动态网站开发环境 2.2 安装和配置Apache 2.2.1 安装Apache前的准备 2.2.2 安装Apache 2.2 13测试Apache 2.2.4 配置Apache 2.2.5 在Windows上管理Apache 2.3 安装和配置PHP 2.3.1 安装PHP前的准备 2.3.2 安装PHP 2.3.3 配置PHP 2.3.4 测试PHP 2.4 安装和配置MySQL 2.4.1 安装MySQL,前的准备 2.4.2 安装MySQL 2.4.3 配置MySQL 2.4.4 在Windows上手动启动和停止MySQL 2.4.5 安装phpMyAdmin 2.5 AppServ组件安装 2.5.1 安装AppSery前的准备 2.5.2 安装。AppSery 2.5.3 测试AppSery 2.5.4 配置Apache 2.5.5 修改MySQL服务器的密码 2.6 PHP的集成开发环境 2.6.1 Dream weaver开发工具 2.6.2 Eclipse开发工具 2.6.3 其他开发工具 第3章 网站主页设计与PHP基础 3.1 网站主页的设计 3.1.1 主页中的页面元素, 3.1.2 规划主页的结构 3.1.3 布局页面版式 3.1.4 用Fireworks创建网页模型 3.2 网站主页的实现 3.2.1 在Dream weaver中创建网站 3.2.2 布局页面元素的样式 3.2.3 实现主页的结构 3.2.4 编辑主页的栏目内容 3.3 网站主页中的链接策略 3.4 PHP语言基础 3.4.1 PHP的程序结构 3.4.2 PHP的句法结构 3.4.3 PHP的数据类型 3.4.4 PHP的控制语句 第4章 网站计数器设计与PHP文件访问 4.1 网站计数器的设计 4.1.1 系统架构 4.1.2 系统设计 4.2 网站计数器的实现 4.2.1 文本输出的网页计数器 4.2.2 图片输出的网页计数器 4.2.3 调试代码 4.3 PHP的函数 4.3.1 PHP函数概述 4.3.2 白定义函数 4.3.3 PHP内置函数 4.4 PHP访问文件 4.4.1 PHP支持的文件系统 4.4..2 PHP访问文件的方法 4.4.3.PHP访问目录 4.5 文件管理器 第5章 会员注册和管理设计与数据获取 5.1 会员注册和管理概述 5.2 会员注册和管理设计 5.2.1 系统架构 5.2.2 系统设计 5.3 注册模块的实现 5.3.1 页面样式表 5.3.2 网页的头部、尾部和数据库连接文件 5.3.3 注册的主页和处理程序 5.3.4 用户申请购书卡页和处理程序 5.3.5 注册用户资料页与处理程序 5.3.6 调试代码 5.4 会员管理模块的实现 5.4.1 页面样式表 5.4.2 网页的头部、尾部和连接数据库 5.4.3 会员管理的主页 5.4.4 用户分级登录页和处理程序 5.4.5 用户购书卡专区页和处理程序 5.4.6 会员修改资料页与处理程序 5.4.7 会员找回密码页与处理程序 5.4..8 购书卡管理页与处理程序 5.4.9 调试代码 5.5 表单数据处理 5.5.1 PHP与表单 5.5.2 表单数据的采集 5.5.3 表单数据处理描述 5.6 cookie与会话管理 5.6.1 数据传递概述 5.6.2 cookie 5.6.3 会话管理 第6章 网上社区设计与PHP数据库访问 6.1 网上社区概述 6.2 留言板的设计 6.2.1 留言板的架构 6.2.2 留言板的设计描述 6.3 留言板的实现 6.3.1 网页的头部、尾部和系统配置文件 6.3.2 留言板的主页——欢迎页 6.3.3 写留言页和回复留言 6.3.4 浏览留言主题页 6.3.5 浏览主题留言页 6.3.6 管理员登录页 6.3.7 屏蔽和删除留言页 6.3.8 调试代码 6.4 聊天室的设计 6.4.1 聊天室的架构 6.4.2 聊天室的设计描述 6.5 聊天室的实现 6.5.1 网页的头部、尾部和系统配置文件 6.5.2 聊天室的主页——登录页 6.5.3 聊天室页 6.5.4 浏览聊天信息页 6.5.5 离开页 6.5.6 注销页 6.5.7 调试代码 6.6 PHP访问数据库 6.6.1 PHP访问数据库的机制 6.6.2 连接数据库服务器 6.6.3 PHP数据库管理函数 6.6.4 PHP查询数据函数 6.6.5 其他数据管理工具 第7章 网上购书与PHP面向对象技术 7.1 网上购书系统分析 7.1.1 系统工作流程分析 7.1.2 系统功能模块分析 7.2 网上购书系统设计 7.2.1 模块的逻辑结构设计 7.2.2 数据库设计 7.2.3 数据操作类设计 7.2.4 界面设计 7.3 网上购书系统实现 7.3.1 数据操作类 7.3.2 图书查询 ’7.3.3 图书显示处理 7.3.4 购物车 7.3.5 订单处理 7.3.6 调试代码 7.4 PHP面向对象技术 7.4.1 基本概念 7.4.2 定义类 7.4.3 创建对象 7.4.4 使用对象的属性和方法 7.4..5 对象的操作 第8章 网站优化与PHP的高级功能 8.1 用户注册安全管理 8.1.1 用户注册安全管理的策略 8.1.2 优化用户注册页面 8.1.3 PHP的GD函数库 8.1.4 图片缩略图 8.2 图像文件上传处理 8.2.1 网站图像存储策略 8.2.2 上传图书封面图像 8.2.3 PHP文件上传处理 8.3 电子邮件处理 8.3.1 PHP电子邮件处理概述 8.3.2 向客户发送邮件 8.3.3 PHP发送电子邮件的方式 8.4 正则表达式 8.4.1 正则表达式简介 8.4.2 常用表单项验证 8.4.3 正则表达式的法则 参考文献

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值