我下载登录了csdn的客户端,但是没给我c币

hnjyzqq 2015-06-23 05:56:16
...全文
348 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDN客服-糊胡 2017-11-30
  • 打赏
  • 举报
回复
大家好! 下载客户端赠送C币的活动,早已结束哈。
oschina_41220305 2017-11-29
  • 打赏
  • 举报
回复
为什么我也没有获得?
yd_YuDan 2017-11-14
  • 打赏
  • 举报
回复
njlkjjk
渔舟唱晚, 2016-03-06
  • 打赏
  • 举报
回复
引用 8 楼 evilchimei 的回复:
没C币怎么办
看一下这里,如何获得C币
evilchimei 2016-03-05
  • 打赏
  • 举报
回复
没C币怎么办
渔舟唱晚, 2015-06-24
  • 打赏
  • 举报
回复
请问您确定发了ID 不是只发了截图吗 或者发的是昵称吗?如果您确定的话 将自己的ID在csdn发站内信到hjknet 我们会帮忙补发
hnjyzqq 2015-06-24
  • 打赏
  • 举报
回复
CSDN 移动客户端是手机上的CSDN,作为全球最大的IT中文社区,CSDN一直致力于为中国的软件开发者和IT从业者提供全方位服务。在广大程序员的支持和陪伴下,CSDN已经走进了自己的第15个年头。 2015年,CSDN 移动客户端上线,我们的一小步,愿和您一起分享。 活动时间: 2015.6.10 - 2015.6.30 注意啦!!!活动方式调整,自2015.6.19 10:24起,下载CSDN iOS、Android移动客户端的用户,客户端登录即可自动获得50C币奖励,登录后可自行查询个人C币数量,无需在此贴截图回复。 所以,2015.6.19 10:24后回复的用户不再重复发送C币,请周知!!!感谢支持!!! 快来,快来,等什么,过来嗨! ————————————————————————————————————————————————
hnjyzqq 2015-06-24
  • 打赏
  • 举报
回复
帖子里不是说不用再发了吗?
渔舟唱晚, 2015-06-24
  • 打赏
  • 举报
回复
请问您把截图发到http://bbs.csdn.net/topics/391051199这个帖子里了吗?
渔舟唱晚, 2015-06-24
  • 打赏
  • 举报
回复
请问您的客户端第一次登录时间是哪天?
hnjyzqq 2015-06-24
  • 打赏
  • 举报
回复
你确定我这个还需要发截图? 我发这个图的意思是说我已经登录了帐号,但是C币没到帐! 注意看下: 帖子里明确说明已经是自动发放,不需要回帖了. 烦请看清楚!
hnjyzqq 2015-06-23
  • 打赏
  • 举报
回复
我靠啊,让客服回答个问题,默认还要40积分啊?!!! NB!
1首页 博客 学院 下载 图文课 论坛 APP 问答 商城 VIP会员 活动 招聘 ITeye GitChat 搜CSDN 写博客 小程序 消息7 下载首页 精品专辑 我的资源 上传资源赚积分 已下载 我的收藏 下载帮助 下载 > 行业 > 金融 > 管家婆辉煌Ⅱ搬移工具 zip文件 管家婆辉煌Ⅱ搬移工具 评分: 辉煌Ⅱ搬移工具是被用来管家婆辉煌Ⅱ系列数据库的搬家工具。 搬家工具 管家婆 辉煌Ⅱ 2019-01-04 上传大小:477KB 所需: 1积分/C 开通VIP 立即下载 分享 收藏 举报 zip文件 管家婆辉煌II系列搬移工具 刚开始使用管家婆的,一般都会把数据录入的比较混乱或者有点混乱,有了这个工具,就可以把商品信息、客户信息等调整到你需要的地方来。 立即下载 3 积分/C 上传者: zhengchushan 时间: 2015-07-13 zip文件 管家婆辉煌系列软件基本资料搬移工具 管家婆软件基本资料搬移,客户搬移 商品类别搬移,员工资料级别搬移 立即下载 1 积分/C 上传者: qq_41106367 时间: 2017-11-19 rar文件 管家婆辉煌TOP12系列搬移工具 适用于 管家婆辉煌ⅡTOP(或食品TOP)系列12.X版本的账套 立即下载 1 积分/C 上传者: cdlgzw 时间: 2018-04-20 rar文件 管家婆辉煌366++搬移工具 使用过管家婆366++的财务人员,这个工具一定有需要。单位信息和商品信息建好后,要再对商品信息和单位信息进行分类管理,366++搬移工具有就它的用武之地了! 使用注意事项: 1、本工具可以对单条基本信息搬移,也可以对信息类进行搬移。 2、为了避免搬移出错,请勿一边搬移一边做帐。 3、已经被使用过的基本信息不能被做为类而向其添加子类信息。 4、只能对往来单位、库存商品和内部职员三种基本信息进行搬移。 5、支持对商品的单个搬移,也支持对商品类的搬移,同时可以进行批量搬移。 6、本搬移工具只能在随同发行的最新版本或补丁中使用。 7、开始使用前会自动备份,默认备份目录为数据库所在机器的 C:\。 立即下载 1 积分/C 上传者: hbiao 时间: 2013-08-18 rar文件 管家婆辉煌II top++ 10.01 基本信息搬移工具 管家婆辉煌II top++ 10.01 基本信息搬移工具 立即下载 1 积分/C 上传者: lydcn 时间: 2013-07-02 rar文件 管家婆数据搬移工具合集 管家婆软件专用的,包含有各种版本的数据迁移工具,可以用来搬移管家婆软件原账套的基础数据到别的账套用或者升级到高版本软件时用得着,个人已经使用多年! 立即下载 1 积分/C 上传者: bujiyicun 时间: 2013-11-27 rar文件 管家婆辉煌版基础信息搬移工具 管家婆辉煌2005 基础信息搬工具 将解压后所得文件及文件夹复制到管家婆2005版目录下 执行可执行文件即可根据需要搬移数据 立即下载 1 积分/C 上传者: fenglikedown 时间: 2014-08-20 rar文件 管家婆期初信息搬迁工具(所有版本适用) 将以下文件放到管家婆安装目录下面:PDataMove.exe、 运行即可。主要用于期初信息分类等工作 适合所有版本管家婆。 立即下载 3 积分/C 上传者: garty 时间: 2010-01-22 rar文件 辉煌Ⅱ搬移工具 辉煌Ⅱ通用 搬移工具你测试好用!帐套升级 立即下载 1 积分/C 上传者: newsohu 时间: 2016-01-08 rar文件 管家婆数据搬移工具(商品信息重新分类) 本工具同时支持辉煌2005和辉煌2005+(两个版本的操作步骤一样),应该包括的5个文件:PDataMove.exe、Movedata.cfg、存储过程.sql、MoveBaseData.chm、说明.txt。 请退出所有程序再执行下列使用步骤: 1.把5个文件都拷贝到辉煌版安装目录下 2、请打开sql的查询分析器,在master处选择对应账套后,打开脚本“存储过程.sql”,点击F5执行即可。 3、执行“PDataMove.exe”。 注意:执行SQL要有完整安装的SQL SERVER并打补丁。MSDE不能执行 立即下载 1 积分/C 上传者: dhf104109 时间: 2010-04-14 exe文件 管家婆辉煌版帐套信息搬移工具 管家婆辉煌版帐套信息搬移工具。亲测好用。 立即下载 1 积分/C 上传者: alin2013 时间: 2013-02-08 rar文件 管家婆财贸双全15.5基本信息搬移工具 管家婆财贸双全15.5基本信息搬移工具. 立即下载 3 积分/C 上传者: a378256762870110 时间: 2015-12-30 rar文件 管家婆辉煌II搬移工具.rar 管家婆辉煌II搬移工具 立即下载 3 积分/C 上传者: djwmk 时间: 2013-08-19 zip文件 管家婆基本信息搬移工具 管家婆基本信息搬移工具 2008辉煌系列 立即下载 3 积分/C 上传者: u013757790 时间: 2014-02-24 rar文件 管家婆\辉煌Ⅱ搬移工具 适用于管家婆\辉煌Ⅱ和366++系列的商品信息、客户信息等的搬移。 立即下载 3 积分/C 上传者: XHXTL 时间: 2011-04-01 rar文件 2008系列搬移工具 适合管家婆辉煌2008系列的搬移工具。 《内部资料》 立即下载 3 积分/C 上传者: copyboy520 时间: 2010-05-21 rar文件 辉煌2 搬移工具 管家婆辉煌2 基本信息搬移工具,免费的非常不错 立即下载 3 积分/C 上传者: dugenxi 时间: 2015-09-01 zip文件 管家婆辉煌72搬移工具 刚开始使用管家婆的,一般都会把数据录入的比较混乱或者有点混乱,有了这个工具,就可以把商品信息、客户信息等调整到你需要的地方来。 立即下载 3 积分/C 上传者: zhengchushan 时间: 2015-07-13 rar文件 管家婆2008数据导入工具 管家婆2008数据导入工具,验证了问题。可以安心使用 立即下载 1 积分/C 上传者: qq_23138889 时间: 2015-04-25 doc文件 管家婆软件各版本写狗工具 管家婆软件各版本写狗工具 一键傻瓜式。 无毒,无加密。 立即下载 24积分/C时间:2014-10-20 doc文件 管家婆数据导入导出工具 很好用的管家婆数据导入导出工具,已测试完成,可放心下载使用 立即下载 1积分/C时间:2018-06-16 doc文件 管家婆数据修复工具解决辉煌版7.1,7.2因病毒或非法使用问题 打开\data\sysdata.dbf文件(可以用excel打开),找到字段‘stock_num’,写入当前的仓库数。如果有4个仓库,‘stock_num’的值就为4。 改完后,把"Crecover"放在安装路径(\grasp)下 ,运行确定就可以 立即下载 1积分/C时间:2015-07-14 doc文件 管家婆excel导入工具标准版4.1+辉煌版模板 管家婆excel导入工具标准版+辉煌版模板 立即下载 2积分/C时间:2011-05-25 doc文件 管家婆7.2完整破解版+系统修复工具以及使用说明. 如果进入管家婆后出现提示:"因病毒或非法使用,您的数据被破坏!请速与我们联系!"使用我这个保证能修复好,前几天我姐家的管家婆系统出现此问题,但是在网上找好多解决办法都有解决了,大部人还要收费。有个数据修复着问我要80RMB。我有给他,我自己是搞网络的对数据库也不太了解,这两天上班事,就研究这个问题,今天终于解决了。如果需要我协助的,使用说明中有我的联系方式,可以联系我,免费为您服务。 立即下载 1积分/C时间:2012-12-13 doc文件 管家婆辉煌II 财贸、工贸、服装、食品 系列 Rockey4ND写狗工具 狗数据 管家婆辉煌II +、财贸、工贸、服装、食品 系列 Rockey4ND 硬狗 写狗工具 、写狗操作方法、多版本狗数据,含一键写狗工具纯净版,自定义客户端数量,写狗工具不支持 top版本,由于管家婆官方现在已经不能下载安装程序 ,些包里包含软件下载地址。 立即下载 46积分/C时间:2017-03-19 doc文件 管家婆辉煌版账套隐藏工具 本软件适合于: 管家婆标准版系列 管家婆辉煌版系列 管家婆服装版系列 千方百计系列 连锁系列 音像系列 安装:只需将本软件拷贝到管家婆的安装目录下即可 清除本软件密码:请删除本软件目录下的VN1文件即可 立即下载 1积分/C时间:2011-01-26 doc文件 管家婆辉煌II10.3新版操作说明书 管家婆辉煌II10.3新版操作说明书,进货 销售 库存 电子书 立即下载 1积分/C时间:2014-08-05 doc文件 管家婆辉煌ⅡTOP+10.7网络版98用户完美免狗补丁附安装包地址 此版本是去了官方广告的版本(广告在软件的右下角) 立即下载 1积分/C时间:2015-05-08 doc文件 管家婆辉煌Ⅱ TOP+10.3 自用 + 注册机 管家婆辉煌版II top+10.3 内含单机版和网络版的pojie补丁和注册机,本人已经测试很稳定。比之前的版本添加了一些功能,也更人性化。注:本软件来自网络,我只是软件的搬运工。下载仅做测试。 立即下载 1积分/C时间:2017-11-18 doc文件 管家婆各版本管理员密码清除工具忘记密码清空重置工具 清空管家婆辉煌 财贸 工贸 服装 分销erp 汽配 食品 的管理员密码 立即下载 1积分/C时间:2017-12-05 doc文件 管家婆搬移工具S3.2 管家服装s2.0版本专用,其他不要用,以免数据错误 立即下载 3积分/C时间:2010-09-09 doc文件 管家婆搬移工具 管家婆软件的基本信息移动 立即下载 3积分/C时间:2016-04-22 doc文件 《管家婆》[基本信息]搬移工具 本系统是《管家婆》的[基本信息]搬移工具。使用此工具,用户可根据需要对《管》中各类基本信息加以调整。从而达到以更高的效率,更方便的使用《管》系统。 立即下载 1积分/C时间:2011-07-10 doc文件 财贸12.0搬移工具 管家婆财贸双全II top12.0版本软件的,可以对基本信息进行数据搬移。 立即下载 3积分/C时间:2014-09-19 doc文件 管家婆辉煌ⅡTOP+12.9(不带+12.9)辉煌版、五金建材版、皮革布匹版、电脑通讯版 四版通用去右下角广告去电子注册找不到狗完美免狗 管家婆辉煌ⅡTOP+12.9(不带+12.9)辉煌版、五金建材版、皮革布匹版、电脑通讯版 四版通用去右下角广告去电子注册找不到狗完美免狗 立即下载 1积分/C时间:2018-07-24 doc文件 管家婆366++搬移工具 使用过管家婆366++的财务人员,这个工具一定有需要。单位信息和商品信息建好后,要再对商品信息和单位信息进行分类管理,366++搬移工具有就它的用武之地了 立即下载 1积分/C时间:2011-04-12 doc文件 管家婆财贸搬移工具 管家婆软件财贸系列内部数据本意工具,整理信息资源 立即下载 3积分/C时间:2014-09-11 doc文件 管家婆 366搬移工具 管家婆 366搬移工具 1、本工具可以对单条基本信息搬移,也可以对信息类进行搬移。 2、为了避免搬移出错,请勿一边搬移一边做帐。 3、已经被使用过的基本信息不能被做为类而向其添加子类信息。 4、只能对往来单位、库存商品和内部职员三种基本信息进行搬移。 5、支持对商品的单个搬移,也支持对商品类的搬移,同时可以进行批量搬移。 6、本搬移工具只能在随同发行的最新版本或补丁中使用。 立即下载 3积分/C时间:2011-03-17 doc文件 管家婆 ERP_V3 II 操作手册 管家婆 ERP_V3 II 操作手册 立即下载 2积分/C时间:2014-02-20 doc文件 管家婆辉煌ⅡTOP+12.8辉煌版、五金建材版、皮革布匹版、电脑通讯版 四版通用去右下角广告去电子注册找不到狗完美免狗 管家婆辉煌ⅡTOP+12.8辉煌版、五金建材版、皮革布匹版、电脑通讯版 四版通用去右下角广告去电子注册找不到狗完美免狗 立即下载 1积分/C时间:2018-03-05 doc文件 管家婆辉煌ⅡTOP+11.0网络版50用户完美免狗补丁 管家婆辉煌ⅡTOP+11.0网络版50用户完美免狗补丁 立即下载 3积分/C时间:2015-11-11 doc文件 管家婆2008系列适用搬移工具 管家婆2008系列适用搬移工具,搬移单位信息,产品信息等 立即下载 0积分/C时间:2018-10-12 doc文件 管家婆辉煌ⅡTOP+12.91单机版网络版去广告免狗补丁无限制破解版 管家婆辉煌ⅡTOP+12.91单机版网络版最新全版本完美免加密狗破解版,已经去除软件的网络验证,加密狗限制和网络回传的后门。 管家婆辉煌ⅡTOP+12.91并且支持辉煌版+五金建材版+皮革布匹版+电脑通讯版)全部四个账套版本,网络版支持多用户,所有版本都有使用期限,支持远程!!! 立即下载 1积分/C时间:2018-11-09 doc文件 管家婆5个版本写狗数据工具 管家婆服装、辉煌II代+、财贸双全Ⅱ+、辉煌2008 366、管家婆5个版本写狗数据工具 立即下载 1积分/C时间:2012-11-14 doc文件 管家婆2008++全系列的信息搬移工具包括2008++V4.1.0.130 管家婆2008++全系列的信息搬移工具包括2008++V4.1.0.130用来搬移数据的 立即下载 3积分/C时间:2010-04-03 doc文件 管家婆数据库极佳SQL数据库修复 极佳SQL数据库修复大师10.0,支持MSSQL 7.0 2000 2005 2008 2008R2 2012 2014 2016 2017 支持各种ERP数据库 金蝶 速达 用友 管家婆等等基于MSSQL数据库。支持数据库无法附加 报错等故障。   支持 各种版本SQL数据库 质疑 置疑 断电损坏。   支持 SQL数据库损坏 无法附加 各种报错问题修复。   支持 SQL数据库 823 824 825页损坏等各类错误修复。   支持 MDF NDF文件修复 支持备份文件修复完美支持各种字符集,支持从MDF文件反删除记录。 支持 SQL数据库各种字段类型 支持压缩 立即下载 1积分/C时间:2018-06-12 doc文件 管家婆辉煌版7.x数据恢复(出现因病毒或非法使用的错误) 管家婆辉煌版7.x数据恢复(出现因病毒或非法使用的错误) 立即下载 1积分/C时间:2018-08-05 doc文件 管家婆搬移工具2008++工具 管家婆搬移工具2008++,是建立基本资料的必备工具,省事省力!用前看实用说明! 立即下载 3积分/C时间:2011-10-19 doc文件 管家婆辉煌366和二代系列搬移工具 该工具适用于辉煌366系列v8.1版本与辉煌Ⅱ系列v8.1的软件。不适合其他版本,请勿和其他版本交叉使用。 立即下载 1积分/C时间:2011-05-15 img liuyanse 关注 查看TA的资源 热点文章 MATLAB 2019A 破解版百度云链接(已亲测20190405) 135 2019-04-05 cxv012 计算机组成原理【高清】pdf 313 2018-12-29 weixin_44168972 Win32和64OpenSSL 140 2018-07-03 zha6476003 DirectX修复工具V3.8增强版 1257 2018-12-15 vbcom 超清原版《Python深度学习》2018中文版pdf+英文版pdf+源代码 2588 2018-10-11 weixin_42398870 Deep Learning With Python_中文版+英文版+代码 463 2018-11-25 dapangwang Navicat_Keygen-4.8 332 2019-02-27 tqs314 WPF视频教程(全网最全,有之一) 874 2018-07-12 lianggan13 win10远程桌面连接工具 911 2018-03-26 sinat_19758811 jdk-8u211-windows-x64.exe 33 2019-04-19 tan3739 公告 CSDN下载频道资源及相关规则调整公告V11.10 下载频道用户反馈专区 下载频道积分规则调整V1710.18 程序人生 程序人生 CSDN资讯 CSDN资讯 kefu@csdn.net QQ客服 客服论坛400-660-0108 工作时间 8:30-22:00 关于我们招聘广告服务 网站地图 百度提供站内搜索 京ICP备19004658号 ©1999-2019 北京创新乐知网络技术有限公司 经营性网站备案信息 网络110报警服务 北京互联网违法和不良信息举报中心 中国互联网举报中心家长监护
全书一共被压缩为5个rar,这是第二个!!!! 其他的请看ID:ljtt123(本人分享) 本博客提供的所有教程的资源原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播。同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该文献之人无任何关系。谢谢合作 本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。.   本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解上,本书采用理论与实践相结合的方式,从程序运行的内部机制进行分析讲解,并通过大量的实例和实验来验证并运用本书的知识。.. 本书语言生动、通俗易懂、讲解细致,大部分章节都提供了多个例子,而且很多例子都是目前web开发中经常使用的功能,具有相当的实用价值。本书不仅可以作为java web开发的学习用书,还可以作为从事java web开发的程序员的参考用书和必备手册。此外,本书的配套光盘还免费提供了价值人民330元的java教学视频,对java语言进行了全面讲解,帮助一些不会java语言的读者快速地从java基础知识的学习中过渡到java web的学习与开发上. 第1部分 xml篇. 第1章 xml与dtd 2 1.1 xml的产生 2 1.2 w3c介绍 2 1.3 关于xml的几个问题 3 1.4 xml与html的比较 4 1.4.1 xml将数据与显示分开 5 1.4.2 xml对文档的格式要求更加严格 6 1.4.3 xml有且只能有一个根元素 6 1.5 xml的编辑工具 7 1.6 xml文档 8 1.6.1 xml声明 9 1.6.2 文档类型声明 10 1.6.3 元素 11 1.6.4 注释 15 1.6.5 处理指令 15 1.6.6 空白处理 16 1.6.7 行尾处理 16 1.6.8 语言标识 16 1.7 格式良好的xml 17 .1.8 dtd 18 1.8.1 在xml文档中引入dtd 18 1.8.2 dtd的结构 21 1.9 有效的xml 35 1.10 xml处理器/解析器 35 1.11 小结 36 第2章 xml名称空间 38 2.1 声明名称空间 38 2.2 名称空间在元素和属性中的运用 39 2.2.1 名称空间在元素中的运用 39 2.2.2 默认名称空间 41 2.2.3 名称空间在属性中的运用 42 2.3 名称空间和dtd 43 2.4 小结 45 第3章 对xml文档进行分析 46 3.1 dom、sax和jaxp 46 3.2 使用dom解析xml文档 47 3.2.1 dom结构模型 47 3.2.2 dom解析器工厂 50 3.2.3 jaxp的错误类和异常类 52 3.2.4 用dom解析xml文档实例 53 3.3 使用sax解析xml文档 65 3.3.1 sax的处理机制 66 3.3.2 配置sax解析器 69 3.3.3 sax解析器工厂 70 3.3.4 sax的异常类 71 3.3.5 errorhandler接口 73 3.3.6 使用sax解析xml文档实例 74 3.4 jdom 83 3.4.1 下载并配置jdom 83 3.4.2 jdom api介绍 84 3.5 dom4j 88 3.5.1 下载并配置dom4j 88 3.5.2 dom4j api介绍 88 3.5.3 第一个实例 92 3.5.4 第二个实例 94 3.6 解析名称空间 96 3.6.1 dom和名称空间 96 3.6.2 sax和名称空间 97 3.6.3 jdom和名称空间 98 3.6.4 dom4j和名称空间 98 3.7 小结 99 第4章 xsl转换 101 4.1 xslt概述 101 4.2 xalan处理器 105 4.3 模板规则 106 4.4 [xsl:apply-templates]元素 107 4.5 [xsl:value-of]元素 108 4.6 [xsl:for-each]元素 110 4.7 匹配节点的模式 111 4.8 mode属性 113 4.9 内置的模板规则 114 4.10 对空白的处理 115 4.11 xpath语言 116 4.11.1 xpath上下文 116 4.11.2 位置路径 117 4.11.3 表达式 121 4.11.4 核心函数库 123 4.12 创建结果树 126 4.12.1 创建元素和属性 127 4.12.2 创建文本 131 4.12.3 创建处理指令 133 4.12.4 创建注释 133 4.12.5 复制节点 134 4.12.6 输出格式化的数字 135 4.13 条件处理 144 4.13.1 [xsl:if] 144 4.13.2 [xsl:choose] 145 4.14 排序 146 4.15 变量和参数 150 4.15.1 变量 150 4.15.2 参数 152 4.16 命名模板 153 4.17 合并样式表 154 4.17.1 导入样式表 154 4.17.2 包含样式表 155 4.18 模板规则冲突的解决 156 4.19 [xsl:output]元素 157 4.19.1 指定输出文档的格式 158 4.19.2 输出xml声明 158 4.19.3 输出文档类型定义 159 4.19.4 输出cdata段 160 4.19.5 指定文档缩进 161 4.19.6 指定媒体类型 161 4.20 xslt中的函数 162 4.21 数字格式化 162 4.22 查询和分组 164 4.23 处理多个输入文档 172 4.24 jaxp中的xslt api 175 4.24.1 转换器工厂 175 4.24.2 transformer和templates 176 4.24.3 一个例子 178 4.25 小结 179 第2部分 servlet篇 第5章 servlet与tomcat 182 5.1 servlet与servlet容器 182 5.2 servlet容器的分类 183 5.3 servlet和其他技术的比较 183 5.4 tomcat介绍 183 5.5 tomcat的安装与配置 184 5.5.1 安装tomcat 185 5.5.2 运行tomcat 186 5.5.3 tomcat启动分析 189 5.5.4 tomcat的体系结构 191 5.6 tomcat的管理程序 193 5.6.1 admin web应用程序 193 5.6.2 manager web应用程序 194 5.7 小结 195 第6章 servlet技术 196 6.1 servlet api 196 6.1.1 servlet接口 196 6.1.2 servlet相关接口与实现类 197 6.2 几个实例 205 6.2.1 实例一:simplehello 205 6.2.2 实例二:welcomeyou 210 6.2.3 实例三:outputinfo 216 6.2.4 实例四:loginservlet 220 6.3 servlet异常 223 6.3.1 servletexception类 224 6.3.2 unavailableexception类 224 6.4 servlet生命周期 224 6.5 servlet上下文 226 6.5.1 servletcontext接口 226 6.5.2 页面访问量统计实例 228 6.6 请求转发 231 6.6.1 requestdispatcher接口 232 6.6.2 得到requestdispatcher对象 232 6.6.3 请求转发的实例 233 6.6.4 sendredirect()和forward()方法的区别 238 6.7 小结 239 第7章 web应用程序的部署 240 7.1 配置任意目录下的web应用程序 240 7.2 war文件 242 7.3 tomcat中servlet的另一种运行方式 244 7.4 与servlet配置相关的元素 247 7.4.1 [servlet]元素及其子元素 247 7.4.2 [servlet-mapping]元素及其子元素 249 7.5 一个实例 250 7.6 小结 253 第8章 数据库访问 254 8.1 驱动程序的类型 254 8.1.1 jdbc-odbc桥 254 8.1.2 部分本地api java驱动程序 255 8.1.3 jdbc网络纯java驱动程序 255 8.1.4 本地协议的纯java驱动程序 256 8.2 安装数据库 256 8.3 jdbc api 260 8.3.1 加载并注册数据库驱动 261 8.3.2 建立到数据库的连接 263 8.3.3 访问数据库 264 8.3.4 事务处理 289 8.3.5 可滚动和可更新的结果集 296 8.4 jdbc数据源和连接池 299 8.5 mysql对中文的处理 302 8.6 小结 302 第9章 会话跟踪 303 9.1 用于会话跟踪的技术 303 9.1.1 ssl会话 304 9.1.2 cookies 304 9.1.3 url重写 305 9.2 java servlet api的会话跟踪 306 9.2.1 httpsession接口 306 9.2.2 session的生命周期 307 9.2.3 cookie的应用 319 9.2.4 httpsessionbindinglistener接口 328 9.2.5 在线人数统计程序 329 9.3 小结 335 第10章 servlet的异常处理机制 337 10.1 声明式异常处理 338 10.1.1 http错误代码的处理 338 10.1.2 java异常的处理 341 10.2 程序式异常处理 343 10.2.1 在try-catch语句中处理异常 343 10.2.2 使用requestdispatcher来处理异常 346 10.3 小结 349 第11章 开发线程安全的servlet 350 11.1 多线程的servlet模型 350 11.2 线程安全的servlet 351 11.2.1 变量的线程安全 351 11.2.2 属性的线程安全 360 11.3 singlethreadmodel接口 362 11.4 小结 363 11.5 思考题 363 第3部分 jsp篇 第12章 jsp技术 366 12.1 jsp简介 366 12.2 jsp的运行机制 366 12.3 jsp的语法 371 12.3.1 指令元素(directive elements) 371 12.3.2 脚本元素(scripting elements) 374 12.3.3 动作元素(action elements) 376 12.3.4 注释 383 12.4 jsp的隐含对象 383 12.4.1 pagecontext 384 12.4.2 out 385 12.4.3 page 385 12.4.4 exception 386 12.5 对象和范围 387 12.6 留言板程序 389 12.7 留言板管理程序 397 12.8 jsp文档 402 12.8.1 jsp文档的标识 404 12.8.2 jsp文档中的元素语法 404 12.9 小结 407 第13章 jsp与javabean 409 13.1 javabean简介 409 13.1.1 属性的命名 409 13.1.2 属性的类型 411 13.2 在jsp中使用javabean 412 13.2.1 [jsp:usebean] 412 13.2.2 [jsp:setproperty] 413 13.2.3 [jsp:getproperty] 414 13.2.4 示例 414 13.3 网上书店程序 418 13.4 小结 440 第14章 jsp开发的两种模型 441 14.1 模型1 441 14.2 模型2 445 14.3 小结 449 第15章 标签库(tag library) 450 15.1 标签库api 450 15.1.1 标签的形式 451 15.1.2 tag接口 451 15.1.3 iterationtag接口 453 15.1.4 bodytag接口 454 15.2 标签库描述符 455 15.2.1 [taglib]元素 456 15.2.2 [validator]元素 457 15.2.3 [listener]元素 457 15.2.4 [tag]元素 458 15.2.5 [tag-file]元素 460 15.2.6 [function]元素 461 15.3 传统标签的开发 462 15.3.1 实例一:[hello]标签 462 15.3.2 实例二:[max]标签 465 15.3.3 实例三:[greet]标签 467 15.3.4 实例四:[switch]标签 469 15.3.5 实例五:[iterate]标签 473 15.4 简单标签的开发 479 15.4.1 simpletag接口 479 15.4.2 实例一:[welcome]标签 480 15.4.3 实例二:[max_ex]标签 481 15.5 小结 483 第16章 表达式语言(el) 484 16.1 语法 484 16.1.1 “[ ]”和“.”操作符 484 16.1.2 算术操作符 484 16.1.3 关系操作符 485 16.1.4 逻辑操作符 485 16.1.5 empty操作符 485 16.1.6 条件操作符 485 16.1.7 圆括号 486 16.1.8 操作符的优先级 486 16.2 隐含对象 486 16.3 命名变量 487 16.4 保留的关键字 488 16.5 函数 488 16.6 小结 489 第17章 jsp标准标签库(jstl) 490 17.1 jstl简介 490 17.2 配置jstl 491 17.3 core标签库 491 17.3.1 一般用途的标签 492 17.3.2 条件标签 496 17.3.3 迭代标签 498 17.3.4 url相关的标签 501 17.4 i18n标签库 506 17.4.1 国际化标签 506 17.4.2 格式化标签 511 17.5 sql标签库 520 17.5.1 [sql:setdatasource] 520 17.5.2 [sql:query] 521 17.5.3 [sql:param] 524 17.5.4 [sql:dateparam] 525 17.5.5 [sql:update] 526 17.5.6 [sql:transaction] 527 17.6 xml标签库 529 17.6.1 核心操作 529 17.6.2 流程控制 532 17.6.3 转换操作 536 17.7 functions标签库 539 17.7.1 fn:contains 539 17.7.2 fn:containsignorecase 539 17.7.3 fn:startswith 540 17.7.4 fn:endswith 541 17.7.5 fn:indexof 541 17.7.6 fn:replace 542 17.7.7 fn:substring 543 17.7.8 fn:substringbefore 544 17.7.9 fn:substringafter 544 17.7.10 fn:split 545 17.7.11 fn:join 546 17.7.12 fn:tolowercase 547 17.7.13 fn:touppercase 547 17.7.14 fn:trim 548 17.7.15 fn:escapexml 548 17.7.16 fn:length 549 17.8 小结 549 第18章 标签文件(tag files) 551 18.1 标签文件的语法 551 18.2 一个简单的标签文件 551 18.3 标签文件的隐含对象 554 18.4 标签文件的指令 555 18.4.1 tag指令 555 18.4.2 attribute指令 556 18.4.3 variable指令 557 18.5 标签文件实例讲解 558 18.5.1 实例一:[welcome]标签 558 18.5.2 实例二:[tohtml]标签 559 18.6 [jsp:invoke]动作元素 561 18.7 [jsp:dobody]动作元素 562 18.8 小结 562 第4部分 应用篇 第19章 使用log4j进行日志操作 564 19.1 log4j介绍 564 19.1.1 logger组件 564 19.1.2 appender组件 566 19.1.3 layout组件 567 19.2 使用log4j 568 19.3 log4j使用实例 572 19.4 ndc和mdc 585 19.5 小结 587 第20章 filter在web开发中的应用 588 20.1 过滤器概述 588 20.2 filter api 589 20.2.1 filter接口 589 20.2.2 filterconfig接口 590 20.2.3 filterchain接口 590 20.3 过滤器的部署 591 20.4 过滤器的开发 592 20.5 对用户进行统一验证的过滤器 594 20.6 对请求和响应数据进行替换的 20.6 过滤器 600 20.7 小结 609 第21章 中文乱码问题与国际化 610 21.1 中文乱码问题产生的由来 610 21.1.1 常用字符集 610 21.1.2 对乱码产生过程的分析 612 21.2 中文乱码问题的解决方案 614 21.3 使用过滤器解决中文问题 616 21.4 让tomcat支持中文文件名 620 21.5 国际化与本地化 621 21.5.1 locale 621.. 21.5.2 资源包 623 21.5.3 编写国际化的web应用程序 625 21.6 小结 629 第22章 使用jbuilder2005开发web 第22章 应用程序 630 22.1 jbuilder2005简介 630 22.2 集成开发环境介绍 631 22.2.1 菜单栏 631 22.2.2 主工具栏 632 22.2.3 工程工具栏和工程窗口 632 22.2.4 结构窗口 633 22.2.5 文件标签和内容窗口 634 22.2.6 文件视图标签 634 22.2.7 消息窗口 637 22.3 jbuilder2005的基本配置 638 22.3.1 配置jdk 638 22.3.2 配置web服务器 640 22.4 文件的上传和下载 642 22.4.1 基于表单的文件上传 642 22.4.2 文件上传格式分析 643 22.4.3 commons-fileupload组件 644 22.4.4 文件上传实例 646 22.4.5 文件下载实例 656 22.5 给图片添加水印和文字 664 22.6 小结 667 第23章 开发安全的web应用程序 668 23.1 概述 668 23.2 理解验证机制 669 23.2.1 http basic authentication 669 23.2.2 http digest authentication 670 23.2.3 https client authentication 670 23.2.4 form based authentication 671 23.3 声明式安全 671 23.3.1 [security-constraint]元素 671 23.3.2 [login-config]元素 673 23.3.3 基本验证的实现 674 23.3.4 基于表单验证的实现 676 23.3.5 使用数据库保存用户名和密码 678 23.4 程序式安全 682 23.5 sql注入攻击的防范 685 23.6 小结 687 第24章 web应用程序开发实例 688 24.1 图像的缩放 688 24.2 如何动态生成验证码 692 24.3 如何避免表单的重复提交 696 24.3.1 在客户端避免表单的重复提交 697 24.3.2 在服务器端避免表单的重复 24.3.2 提交 700 24.4 小结 706 第25章 使用ant辅助web应用程序 第25章 开发 707 25.1 ant介绍 707 25.2 安装并配置ant 708 25.2.1 下载并安装ant 708 25.2.2 设置ant的运行环境 708 25.3 编写ant的构建文件 709 25.3.1 准备工作 709 25.3.2 工程([project]) 712 25.3.3 目标([target]) 713 25.3.4 任务 714 25.3.5 path-like structures 728 25.3.6 引用(references) 729 25.4 部署到tomcat 730 25.5 运行ant 732 25.6 小结 732 第26章 xml和xslt在web开发中的 第26章 应用 733 26.1 功能概述 733 26.2 程序设计 733 26.2.1 软件架构 733 26.2.2 页面设计 735 26.2.3 数据库设计 747 26.3 程序实现 749 26.3.1 org.sunxin.guestbook 749 26.3.2 org.sunxin.guestbook.beans 750 26.3.3 org.sunxin.guestbook.util 758 26.3.4 org.sunxin.guestbook.parser 762 26.3.5 org.sunxin.guestbook.controller 765 26.3.6 org.sunxin.guestbook.view 787 26.3.7 page.xsl 791 26.3.8 web.xml 797 26.3.9 context.xml 798 26.4 小结 798 附录a 快速掌握html 799 附录b 解析http 820 附录c server.xml文件 833 附录d web.xml文件 840 索引 852...
"^The": 匹配以 "The"开头的字符串; "of despair$": 匹配以 "of despair" 结尾的字符串; "^abc$": 匹配以abc开头和以abc结尾的字符串,实际上是只有abc与之匹配 "notice": 匹配包含notice的字符串 你可以看见如果你有用我们提到的两个字符(最后一个例子),就是说 模式(正则表达式) 可以出现在被检验字符串的任何地方,你有把他锁定到两边 这里还有几个字符 '*', '+',和 '?', 他们用来表示一个字符可以出现的次数或者顺序. 他们分别表示:"zero or more", "one or more", and "zero or one." 这里是一些例子: "ab*": 匹配字符串a和0个或者更多b组成的字符串("a", "ab", "abbb", etc.); "ab+": 和上面一样,但最少有一个b ("ab", "abbb", etc.); "ab?":匹配0个或者一个b; "a?b+$": 匹配以一个或者0个a再加上一个以上的b结尾的字符串. 你也可以在大括号里面限制字符出现的个数,比如 "ab{2}": 匹配一个a后面跟两个b(一个也不能少)("abb"); "ab{2,}": 最少更两个b("abb", "abbbb", etc.); "ab{3,5}": 2-5个b("abbb", "abbbb", or "abbbbb"). 你还要注意到你必须总是指定 (i.e, "{0,2}", not "{,2}").同样,你必须注意到, '*', '+', 和'?' 分别和一下三个范围标注是一样的,"{0,}", "{1,}", 和 "{0,1}"。 现在把一定数量的字符放到小括号里,比如: "a(bc)*": 匹配 a 后面跟0个或者一个"bc"; "a(bc){1,5}": 一个到5个 "bc." 还有一个字符 '│', 相当于OR 操作: "hi│hello": 匹配含有"hi" 或者 "hello" 的 字符串; "(b│cd)ef": 匹配含有 "bef" 或者 "cdef"的字符串; "(a│b)*c": 匹配含有这样 - 多个(包括0个)a或b,后面跟一个c 的字符串 的字符串; 一个点('.')可以代表所有的 单一字符: "a.[0-9]": 一个a跟一个字符再跟一个数字的 (含有这样一个字符串的字符串将被匹配,以后省略此括号) "^.{3}$": 以三个字符结尾 . 中括号括住的内容只匹配一个 单一的字符 "[ab]": 匹配单个的 a 或者 b ( 和 "a│b" 一样); "[a-d]": 匹配'a' 到'd'的单个字符 (和"a│b│c│d" 还有 "[abcd]"效果一样); "^[a-zA-Z]": 匹配以字母开头的字符串 "[0-9]%": 匹配含有 形如 x% 的字符串 ",[a-zA-Z0-9]$": 匹配以逗号在加一个数字或字母结尾的字符串 你也可以把你不想要得字符列在中括号里,你只需要在总括号里面使用'^' 作为开头 (i.e., "%[^a-zA-Z]%" 匹配含有 两个百分号里面有一个非字母 的字符串). 为了能够解释,但"^.[$()│*+?{\"作为有特殊意义的字符的时候,你必须在这些字符面前加'', 还有在php3中你应该避免在模式的最前面使用\, 比如说,正则表达式 "(\$│?[0-9]+" 应该这样调用 ereg("(\\$│?[0-9]+", $str) (不知道php4是不是一样) 不要忘记在中括号里面的字符是这条规路的例外—在中括号里面, 所有的特殊字符,包括(''), 都将失去他们的特殊性质(i.e., "[*\+?{}.]"匹配含有这些字符的字符串). 还有,正如regx的手册告诉我们: "如果列表里含有 ']', 最好把它作为列表里的第一个字符(可能跟在'^'后面). 如果含有'-', 最好把它放在最前面或者最后面, or 或者一个范围的第二个结束点(i.e. [a-d-0-9]中间的‘-’将有效. 为了完整, 我应该涉及到 collating sequences, character classes, 同埋 equivalence classes. 但我在这些方面不想讲的太详细, 这些在下面的文章仲都不需要涉及到. 你们可以在regex man pages 那里得到更多消息. 如何构建一个模式来匹配 货数量 的输入 好了,现在我们要用我们所学的来干一些有用的事:构建一个匹配模式去检查输入的信息是否为一个表示money的数字。我们认为一个表示money的数量有四种方式: "10000.00" 和 "10,000.00",或者有小数部分, "10000" and "10,000". 现在让我们开始构建这个匹配模式: ^[1-9][0-9]*$ 这是所变量必须以非0的数字开头.但这也意味着 单一的 "0" 也不能通过测试. 以下是解决的方法: ^(0│[1-9][0-9]*)$ "只有0和不以0开头的数字与之匹配",我们也可以允许一个负号再数字之前: ^(0│-?[1-9][0-9]*)$ 这就是: "0 或者 一个以0开头可能有一个负号在前面的数字." 好了, 好了现在让我们别那么严谨,允许以0开头.现在让我们放弃 负号 , 因为我们在表示钱的时候并不需要用到. 我们现在指定 模式 用来匹配小数部分: ^[0-9]+(\.[0-9]+)?$ 这暗示匹配的字符串必须最少以一个阿拉伯数字开头. 但是注意,在上面模式中 "10." 是不匹配的, 只有 "10" 和 "10.2" 才可以. (你知道为什么吗) ^[0-9]+(\.[0-9]{2})?$ 我们上面指定小数点后面必须有两位小数.如果你认为这样太苛刻,你可以改成: ^[0-9]+(\.[0-9]{1,2})?$ 这将允许小数点后面有一到两个字符. 现在我们加上用来增加可读性的逗号(每隔三位), 我们可以这样表示: ^[0-9]{1,3}(,[0-9]{3})*(\.[0-9]{1,2})?$ 不要忘记加号 '+' 可以被乘号 '*' 替代如果你想允许空白字符串被输入话 (为什么?). 也不要忘记反斜杆 ’\’ 在php字符串中可能会出现错误 (很普遍的错误). 现在,我们已经可以确认字符串了, 我们现在把所有逗号都去掉 str_replace(",", "", $money) 然后在把类型看成 double然后我们就可以通过他做数学计算了. 构造检查email的正则表达式 好,让我们继续讨论怎么验证一个email地址. 在一个完整的email地址中有三个部分: POP3 用户名 (在 '@' 左边的一切), '@', 服务器名(就是剩下那部分). 用户名可以含有大小写字母阿拉伯数字,句号 ('.'), 减号('-'), and 下划线 ('_'). 服务器名字也是符合这个规则,当然下划线除外. 现在, 用户名的开始和结束都不能是句点. 服务器也是这样. 还有你不能有两个连续的句点他们之间至少存在一个字符,好现在我们来看一下怎么为用户名写一个匹配模式: ^[_a-zA-Z0-9-]+$ 现在还不能允许句号的存在. 我们把它加上: ^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*$ 上面的意思就是说: "以至少一个规范字符(除.意外)开头,后面跟着0个或者多个以点开始的字符串." 简单化一点, 我们可以用 eregi()取代 ereg().eregi()对大小写不敏感, 我们就不需要指定两个范围 "a-z" 和 "A-Z" – 只需要指定一个就可以了: ^[_a-z0-9-]+(\.[_a-z0-9-]+)*$ 后面的服务器名字也是一样,但要去掉下划线: ^[a-z0-9-]+(\.[a-z0-9-]+)*$ Done. 现在只需要用”@”把两部分连接: ^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$ 这就是完整的email认证匹配模式了,只需要调用 eregi(‘^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$ ’,$eamil) 就可以得到是否为email了 正则表达式的其他用法 提取字符串 ereg() and eregi() 有一个特性是允许用户通过正则表达式去提取字符串的一部分(具体用法你可以阅读手册). 比如说,我们想从 path/URL 提取文件名 – 下面的代码就是你需要: ereg("([^\\/]*)$", $pathOrUrl, $regs); echo $regs[1]; 高级的代换 ereg_replace() 和 eregi_replace()也是非常有用的: 假如我们想把所有的间隔负号都替换成逗号: ereg_replace("[ \n\r\t]+", ",", trim($str)); PHP被大量的应用于Web的后台CGI开发,通常是在用户数据数据之后得出某种结果,但是如果用户输入的数据不正确,就会出现问题,比如说某人的生日是"2月30日"!那应该怎么样来检验暑假是否正确呢? 在PHP中加入了正则表达式的支持,让我们可以十分方便的进行数据匹配。 2 什么是正则表达式: 简单的说,正则表达式是一种可以用于模式匹配和替换的强大工具。在几乎所有的基于UNIX/LINUX系统的软件工具中找到正则表达式的痕迹,例如:Perl或PHP脚本语言。此外,JavaScript这种客户端的脚本语言也提供了对正则表达式的支持,现在正则表达式已经成为了一个通用的概念和工具,被各类技术人员所广泛使用。 在某个Linux网站上面有这样的话:"如果你问一下Linux爱好者最喜欢什么,他可能会回答正则表达式;如果你问他最害怕什么,除了繁琐的安装配置外他肯定会说正则表达式。" 正如上面说的,正则表达式看起来非常复杂,让人害怕,大多数的PHP初学者都会跳过这里,继续下面的学习,但是PHP中的正则表达式有着可以利用模式匹配找到符合条件的字符串、判断字符串是否合乎条件或者用指定的字符串来替代符合条件的字符串等强大的功能,不学实在太可惜了…… 3 正则表达式的基本语法: 一个正则表达式,分为三个部分:分隔符,表达式和修饰符。 分隔符可以是除了特殊字符以外的任何字符(比如"/ !"等等),常用的分隔符是"/"。表达式由一些特殊字符(特殊字符详见下面)和非特殊的字符串组成,比如"[a-z0-9_-]+@[a-z0-9_-.]+"可以匹配一个简单的电子邮件字符串。修饰符是用来开启或者关闭某种功能/模式。下面就是一个完整的正则表达式的例子: /hello.+?hello/is 上面的正则表达式"/"就是分隔符,两个"/"之间的就是表达式,第二个"/"后面的字符串"is"就是修饰符。 在表达式中如果含有分隔符,那么就需要使用转义符号"\",比如"/hello.+?\/hello/is"。转义符号除了用于分隔符外还可以执行特殊字符,全部由字母构成的特殊字符都需要"\"来转义,比如"\d"代表全体数字。 4 正则表达式的特殊字符: 正则表达式中的特殊字符分为元字符、定位字符等等。 元字符是正则表达式中一类有特殊意义的字符,用来描述其前导字符(即元字符前面的字符)在被匹配的对象中出现的方式。元字符本身是一个个单一的字符,但是不同或者相同的元字符组合起来可以构成大的元字符。 元字符: 大括号:大括号用来精确指定匹配元字符出现的次数,例如"/pre{1,5}/"表示匹配的对象可以是"pre"、"pree"、"preeeee"这样在"pr"后面出现1个到5个"e"的字符串。或者"/pre{,5}/"代表pre出现0此到5次之间。 加号:"+"字符用来匹配元字符前的字符出现一次或者多次。例如"/ac+/"表示被匹配的对象可以是"act"、"account"、"acccc"等在"a"后面出现一个或者多个"c"的字符串。"+"相当于"{1,}"。 星号:"*"字符用来匹配元字符前的字符出现零次或者多次。例如"/ac*/"表示被匹配的对象可以是"app"、"acp"、"accp"等在"a"后面出现零个或者多个"c"的字符串。"*"相当于"{0,}"。 问号:"?"字符用来匹配元字符前的字符出现零次或者1次。例如"/ac?/"表示匹配的对象可以是"a"、"acp"、"acwp"这样在"a"后面出现零个或者1个"c"的字符串。"?"在正则表达式中还有一个非常重要的作用,即"贪婪模式"。 还有两个很重要的特殊字符就是"[ ]"。他们可以匹配"[]"之中出现过的字符,比如"/[az]/"可以匹配单个字符"a"或者"z";如果把上面的表达式改成这样"/[a-z]/",就可以匹配任何单个小写字母,比如"a"、"b"等等。 如果在"[]"中出现了"^",代表本表达式不匹配"[]"内出现的字符,比如"/[^a-z]/"不匹配任何小写字母!并且正则表达式给出了几种"[]"的默认值: [:alpha:]:匹配任何字母 [:alnum:]:匹配任何字母和数字 [:digit:]:匹配任何数字 [:space:]:匹配空格符 [:upper:]:匹配任何大写字母 [:lower:]:匹配任何小写字母 [:punct:]:匹配任何标点符号 [:xdigit:]:匹配任何16进制数字 另外下面这些特殊字符在转义符号"\"转义后代表的含义如下: s:匹配单个的空格符 S:用于匹配除单个空格符之外的所有字符。 d:用于匹配从0到9的数字,相当于"/[0-9]/"。 w:用于匹配字母,数字或下划线字符,相当于"/[a-zA-Z0-9_]/"。 W:用于匹配所有与w不匹配的字符,相当于"/[^a-zA-Z0-9_]/"。 D:用于匹配任何非10进制的数字字符。 .:用于匹配除换行符之外的所有字符,如果经过修饰符"s"的修饰,"."可以代表任意字符。 利用上面的特殊字符可以很方便的表达一些比较繁琐的模式匹配。例如"/\d0000/"利用上面的正则表达式可以匹配万以上,十万一下的整数字符串。 定位字符: 定位字符是正则表达式中又一类非常重要的字符,它的主要作用是用于对字符在匹配对象中的位置进行描述。 ^:表示匹配的模式出现在匹配对象的开头(和在"[]"里面不同) $:表示匹配的模式出现在匹配对象的末尾 空格:表示匹配的模式出现在开始和结尾的两个边界之一 "/^he/":可以匹配以"he"字符开头的字符串,比如hello、height等等; "/he$/":可以匹配以"he"字符结尾的字符串即she等; "/ he/":空格开头,和^的作用一样,匹配以he开头的字符串; "/he /":空格结束,和$的作用一样,匹配以he结尾的字符串; "/^he$/":表示只和字符串"he"匹配。 括号: 正则表达式除了可以用户匹配,还可以用括号"()"来记录需要的信息,储存起来,给后面的表达式读取。比如: /^([a-zA-Z0-9_-]+)@([a-zA-Z0-9_-]+)(.[a-zA-Z0-9_-])$/ 就是记录邮件地址的用户名,和邮件地址的服务器地址(形式为username@server.com之类的),在后面如果想要读取记录下来的字符串,只是需要用"转义符+记录的次序"来读取。比如"\1"就相当于第一个"[a-zA-Z0-9_-]+","\2"相当于第二个([a-zA-Z0-9_-]+),"\3"就是第三个(.[a-zA-Z0-9_-])。但是在PHP中,"\"是一个特殊的字符,需要转义,所以""到了PHP的表达式中就应该写成"\\1"。 其他特殊符号: "|":或符号"|"和PHP里面的或一样,不过是一个"|",而不是PHP的两个"||"!意思就是可以是某个字符或者另一个字符串,比如"/abcd|dcba/"可能匹配"abcd"或者"dcba"。 5 贪婪模式: 前面在元字符中提到过"?"还有一个重要的作用,即"贪婪模式",什么是"贪婪模式"呢? 比如我们要匹配以字母"a"开头字母"b"结尾的字符串,但是需要匹配的字符串在"a"后面含有很多个"b",比如"a bbbbbbbbbbbbbbbbb",那正则表达式是会匹配第一个"b"还是最后一个"b"呢?如果你使用了贪婪模式,那么会匹配到最后一个"b",反之只是匹配到第一个"b"。 使用贪婪模式的表达式如下: /a.+?b/ /a.+b/U 不使用贪婪模式的如下: /a.+b/ 上面使用了一个修饰符U,详见下面的部分。 6 修饰符: 在正则表达式里面的修饰符可以改变正则的很多特性,使得正则表达式更加适合你的需要(注意:修饰符对于大小写是敏感的,这意味着"e"并不等于"E")。正则表达式里面的修饰符如下: i :如果在修饰符中加上"i",则正则将会取消大小写敏感性,即"a"和"A" 是一样的。 m:默认的正则开始"^"和结束"$"只是对于正则字符串如果在修饰符中加上"m",那么开始和结束将会指字符串的每一行:每一行的开头就是"^",结尾就是"$"。 s:如果在修饰符中加入"s",那么默认的"."代表除了换行符以外的任何字符将会变成任意字符,也就是包括换行符! x:如果加上该修饰符,表达式中的空白字符将会被忽略,除非它已经被转义。 e:本修饰符仅仅对于replacement有用,代表在replacement中作为PHP代码。 A:如果使用这个修饰符,那么表达式必须是匹配的字符串中的开头部分。比如说"/a/A"匹配"abcd"。 E:与"m"相反,如果使用这个修饰符,那么"$"将匹配绝对字符串的结尾,而不是换行符前面,默认就打开了这个模式。 U:和问号的作用差不多,用于设置"贪婪模式"。 7 PCRE相关的正则表达式函数: PHP的Perl兼容正则表达式提供的多个函数,分为模式匹配,替换和匹配数目等等: 1、preg_match : 函数格式:int preg_match(string pattern, string subject, array [matches]); 这个函数会在string中使用pattern表达式来匹配,如果给定了[regs],就会将string记录到[regs][0]中,[regs][1]代表使用括号"()"记录下来的第一个字符串,[regs][2]代表记录下来的第二个字符串,以此类推。preg如果在string中找到了匹配的pattern,就会返回"true",否则返回"false"。 2、preg_replace : 函数格式:mixed preg_replace(mixed pattern, mixed replacement, mixed subject); 这个函数会使用将string中符合表达式pattern的字符串全部替换为表达式replacement。如果replacement中需要包含pattern的部分字符,则可以使用"()"来记录,在replacement中只是需要用"\1"来读取。 3、preg_split : 函数格式:array preg_split(string pattern, string subject, int [limit]); 这个函数和函数split一样,区别仅在与split可以使用简单正则表达式来分割匹配的字符串,而preg_split使用完全的Perl兼容正则表达式。第三个参数limit代表允许返回多少个符合条件的值。 4、preg_grep : 函数格式:array preg_grep(string patern , array input); 这个函数和preg_match功能基本上,不过preg_grep可以将给定的数组input中的所有元素匹配,返回一个新的数组。 下面举一个例子,比如我们要检查Email地址的格式是否正确: <?php function emailIsRight($email) { if (preg_match("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$",$email)) { return 1; } return 0; } if(emailIsRight('y10k@963.net')) echo '正确
'; if(!emailIsRight('y10k@fffff')) echo '不正确
'; ?> 上面的程序会输出"正确
不正确"。 8.PHP中的Perl兼容正则表达式和Perl/Ereg正则表达式的区别: 虽然叫做“Perl兼容正则表达式”,但是和Perl的正则表达式相比,PHP的还是由一些不同,比如修饰符“G”在Perl里面代表全部匹配,但是在PHP中有加入对这个修饰符的支持。 还有就是和ereg系列函数的区别,ereg也是PHP中提供的正则表达式函数,不过和preg相比,要弱上很多。 1、ereg里面是不需要也不能使用分隔符和修饰符的,所以ereg的功能比preg要弱上不少。 2、关于".":点在正则里面一般是除了换行符以外的全部字符,但是在ereg里面的"."是任意字符,即包括换行符!如果在preg里面希望"."能够包括换行符,可以在修饰符中加上"s"。 3、ereg默认使用贪婪模式,并且不能修改,这个给很多替换和匹配带来麻烦。 4、速度:这个或许是很多人关心的问题,会不会preg功能强大是以速度来换取的?不用担心,preg的速度要远远比ereg快,笔者做了一个程序测试: time test: PHP代码: <?php echo "Preg_replace used time:"; $start = time(); for($i=1;$i<=100000;$i++) { $str = "ssssssssssssssssssssssssssss"; preg_replace("/s/","",$str); } $ended = time()-$start; echo $ended; echo " ereg_replace used time:"; $start = time(); for($i=1;$i<=100000;$i++) { $str = "ssssssssssssssssssssssssssss"; ereg_replace("s","",$str); } $ended = time()-$start; echo $ended; echo " str_replace used time:"; $start = time(); for($i=1;$i<=100000;$i++) { $str = "sssssssssssssssssssssssssssss"; str_replace("s","",$str); } $ended = time()-$start; echo $ended; ?> 结果: Preg_replace used time:5 ereg_replace used time:15 str_replace used time:2 str_replace因为不需要匹配所以速度非常快,而preg_replace的速度比ereg_replace要快上不少。 9.关于PHP3.0对于preg的支持: 在PHP 4.0中默认加入了preg支持,但是在3.0中确有。如果在3.0中希望使用preg函数,必须加载php3_pcre.dll文件,只要在php.ini的extension部分设置加入"extension = php3_pcre.dll"然后从新启动PHP就可以了! 其实正则表达式还常用于UbbCode的实现,很多PHP论坛都使用了这个方法(比如zForum zphp.com或者vB vbullent.com),但是具体的代码比较长。 本文来自http://blog.csdn.net/kkobebryant/archive/2005/01/25/267527.aspx

544

社区成员

发帖
与我相关
我的任务
社区描述
客服专区
其他 技术论坛(原bbs)
社区管理员
  • 客服专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧