使用VB开发CGI程序怎么提交二进制文件呢?

cooler 2000-03-24 02:23:00
我使用的是WINDOWS的API函数:
Declare Function GetStdHandle Lib "kernel32" _
(ByVal nStdHandle As Long) As Long
Declare Function WriteFile Lib "kernel32" _
(ByVal hFile As Long, _
ByVal lpBuffer As String, _
ByVal nNumberOfBytesToWrite As Long, _
lpNumberOfBytesWritten As Long, _
lpOverlapped As Any) As Long
然后封装为自己的SEND函数:
Sub Send(s As String)
Dim rc As Long
Dim lBytesWritten As Long
rc = WriteFile(hStdOut, s, Len(s), lBytesWritten, ByVal 0&)
End Sub
这对我发送字符串没什么问题,但发送二进制数据就不知道怎么传送参数了,请问我应该怎样传递二进制数据(如整型)给writefile呢?


...全文
135 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
cooler 2000-03-30
  • 打赏
  • 举报
回复
我使用了上面的说法,但实际上行不通,比如
Dim bs() as Byte
bs = "sdfsdfsdfsdf"
的结果是:
bs=s,0,d,0,f,0...所以没有办法发送MIME信息给服务器.
我后来写了一个专门的字符串到BYTE数组的转换函数,但服务方接受的信息还是不对头.
后来我依旧使用原来的DECLARE,既:
Declare Function WriteFile Lib "kernel32" _
(ByVal hFile As Long, _
ByVal lpBuffer As String, _
ByVal nNumberOfBytesToWrite As Long, _
lpNumberOfBytesWritten As Long, _
lpOverlapped As Any) As Long
Sub Send(s As String)
Dim rc As Long
Dim lBytesWritten As Long
rc = WriteFile(hStdOut, s, Len(s), lBytesWritten, ByVal 0&)
End Sub

只在调用函数时使用:
dim bs() as byte
bs()=...
send bs
浏览器接受到的还是不正确的东西.
而如果我打开本地文件,写本地文件则没有问题.时间急迫,所以我一时心急,又换用
location: http://somehost/somedir/somdocument
了.很感谢大虾的支持,谢谢.
此外如果有空我 回继续研究 ,通过后会把源码公布.











sunsetyang 2000-03-25
  • 打赏
  • 举报
回复
保险一点,你还是在send里面包含一个标明当前缓冲区有效长度的参数吧!!如果发送的数据是byte型的,它的长度就等于有多少个单位,而其他类型的数据要计算一下;如要发送n个整型数据时,发送长度为4n.具体计算为size*sizeof(datatype).这样的处理灵活一些。很多时候,并不是缓冲区多大就有多少数据的。
Sub Send(s() As Byte,Len as Long)
Dim rc As Long
Dim lBytesWritten As Long
rc = WriteFile(hStdOut, s,Len,lBytesWritten, ByVal 0&)
End Sub
hx 2000-03-24
  • 打赏
  • 举报
回复
我也要一份,谢谢。
Un1 2000-03-24
  • 打赏
  • 举报
回复
把函数重新声明:

Declare Function WriteFile Lib "kernel32" _
(ByVal hFile As Long, _
lpBuffer As Any, _
ByVal nNumberOfBytesToWrite As Long, _
lpNumberOfBytesWritten As Long, _
lpOverlapped As Any) As Long

把函数重新修改:
Sub Send(s() As Byte)
Dim rc As Long
Dim lBytesWritten As Long

Dim l As Long
l = Lbound(s)

rc = WriteFile(hStdOut, s(l), Ubound(s) - l + 1, lBytesWritten, ByVal 0&)
End Sub

因为任何类型都可以转换为Byte数组,所以肯定行,比如发送字符串:

Dim bs() as Byte
bs = "sdfsdfsdfsdf"

Send bs
556,delay1.zip 源码设计中的延时功能(1KB)557,type_1.zip 趣味打字2.1(233KB)558,test1.zip asp编写动态网页计数器(1KB)559,hztosm.zip 汉字转声母完全源代码(90KB)560,formatfloppy.zip 格式化软盘源代码(13KB)561,freespace.zip 获取磁盘剩余空间(3KB)562,setscreen 设置屏幕分辨率(7KB)563,snapwindow.zip 一个抓图的小程序(14KB)564,hotrgn.zip 热区的应用(6KB)565,getserial.zip 读出驱动器序列号,可以制作加密安装盘(2KB)566,opencdrom.zip 可以程序控制打开或关闭CDROM,非常方便(2KB)567,getusername.zip 自动读取用户登陆名称,再进行密码验证(2KB)568,gethostname.zip 读取机器名称(2KB)569,printpic.zip 解决图形打印的问题(50KB)570,g029_pcl.zip拼图游戏(56KB)571,g028_octopus.zip一个简单的掌上游戏机的游戏,这个游戏机的内容是要逃过大章鱼的捕捉(408KB)572,g027_menace.zip仓库世家-推箱子的游戏(114KB)573,g026_breKthru.zip弹珠台游戏(41KB)574,g025_zhq.zip一个能考考你的智慧的智慧棋(17KB)575,g024_vb-sol.zipVB 的扑克牌游戏的源码(15KB)576,g023_picgame.zip一个好玩的拼图游戏(25KB)577,g021_zm015看着超级玛莉不停的追赶着你的鼠标,是不是很有意思呢?(25KB)578,g020_zm019一个拼图游戏,可以自己指定图片进行游戏(12KB)579,g019_zm011一个网络五子棋的源程序(并有聊天功能)(41KB)580,g018_zm010.zip中国象棋的源程序,支持网络作战(23KB)581,g0173维的breaKthrough游戏(8KB)582,g016.zip小蜜蜂射击游戏源程序, 不仅演示了 vb 的图形操作技巧,键盘操作,还演示了怎样使用 npmod32.dll(已包含,免费) 来播mod,s3m,mpp,med,xm,it,mdz,itz,xmz,s3z 等音乐格式文件(208KB)583,g015.zip旋转俄罗斯 1.0 demo 版的源程序vb5 版存贮,稍加修改即适合于 vb4、vb3。里面有用 vb 处理俄罗斯方块的核心内容及简单注释(8KB)584,g014.zipbreakthrough游戏(保持小球在屏幕上跳动)源程序(50KB)585,g013.zip3维迷宫游戏的源程序(40KB)586,g012.zip射击(导弹)游戏的源程序(5KB)587,g011.zip生命游戏源程序(12KB)588,g010.zip一个精灵游戏源程序(33KB)589,g009.zip翻转棋游戏(64子, 每子正反面分别为黑白两色, 两人对弈)的源程序(29)590,g008.zip纸牌游戏源程序(45KB)591,g007.zip太空船游戏例子源程序(48KB)592,g006.zip用白雪做背面的俄罗斯方块(1.0版),自带EXE(224KB)593,g005.zip个人娱乐游戏,自带EXE(25KB)594,g004.zip个个人自娱乐的扑克牌游戏(57KB)595,g003.zip代表和平的娱乐游戏,自带EXE(12KB)596,g002.zip一个迷宫游戏,还有地图编辑器呢,完全源码(230KB)597,g001.zip模仿windows中的扫雷,自带EXE(38KB)
556,delay1.zip
源码设计中的延时功能(1KB)
557,type_1.zip
趣味打字2.1(233KB)
558,test1.zip
asp编写动态网页计数器(1KB)
559,hztosm.zip
汉字转声母完全源代码(90KB)
560,formatfloppy.zip
格式化软盘源代码(13KB)
561,freespace.zip
获取磁盘剩余空间(3KB)
562,setscreen
设置屏幕分辨率(7KB)
563,snapwindow.zip
一个抓图的小程序(14KB)
564,hotrgn.zip
热区的应用(6KB)
565,getserial.zip
读出驱动器序列号,可以制作加密安装盘(2KB)
566,opencdrom.zip
可以程序控制打开或关闭CDROM,非常方便(2KB)
567,getusername.zip
自动读取用户登陆名称,再进行密码验证(2KB)
568,gethostname.zip
读取机器名称(2KB)
569,printpic.zip
解决图形打印的问题(50KB)
570,g029_pcl.zip
拼图游戏(56KB)
571,g028_octopus.zip
一个简单的掌上游戏机的游戏,这个游戏机的内容是要逃过大章鱼的捕捉(408KB)
572,g027_menace.zip
仓库世家-推箱子的游戏(114KB)
573,g026_breKthru.zip
弹珠台游戏(41KB)
574,g025_zhq.zip
一个能考考你的智慧的智慧棋(17KB)
575,g024_vb-sol.zip
VB 的扑克牌游戏的源码(15KB)
576,g023_picgame.zip
一个好玩的拼图游戏(25KB)
577,g021_zm015
看着超级玛莉不停的追赶着你的鼠标,是不是很有意思呢?(25KB)
578,g020_zm019
一个拼图游戏,可以自己指定图片进行游戏(12KB)
579,g019_zm011
一个网络五子棋的源程序(并有聊天功能)(41KB)
580,g018_zm010.zip
中国象棋的源程序,支持网络作战(23KB)
581,g017
3维的breaKthrough游戏(8KB)
582,g016.zip
小蜜蜂射击游戏源程序, 不仅演示了 vb 的图形操作技巧,键盘操作,还演示了怎样使用 npmod32.dll(已包含,免费) 来播mod,s3m,mpp,med,xm,it,mdz,itz,xmz,s3z 等音乐格式文件(208KB)
583,g015.zip
旋转俄罗斯 1.0 demo 版的源程序vb5 版存贮,稍加修改即适合于 vb4、vb3。里面有用 vb 处理俄罗斯方块的核心内容及简单注释(8KB)
584,g014.zip
breakthrough游戏(保持小球在屏幕上跳动)源程序(50KB)
585,g013.zip
3维迷宫游戏的源程序(40KB)
586,g012.zip
射击(导弹)游戏的源程序(5KB)
587,g011.zip
生命游戏源程序(12KB)
588,g010.zip
一个精灵游戏源程序(33KB)
589,g009.zip
翻转棋游戏(64子, 每子正反面分别为黑白两色, 两人对弈)的源程序(29)
590,g008.zip
纸牌游戏源程序(45KB)
591,g007.zip
太空船游戏例子源程序(48KB)
592,g006.zip
用白雪做背面的俄罗斯方块(1.0版),自带EXE(224KB)
593,g005.zip
个人娱乐游戏,自带EXE(25KB)
594,g004.zip
个个人自娱乐的扑克牌游戏(57KB)
595,g003.zip
代表和平的娱乐游戏,自带EXE(12KB)
596,g002.zip
一个迷宫游戏,还有地图编辑器呢,完全源码(230KB)
597,g001.zip
模仿windows中的扫雷,自带EXE(38KB)
598,p012_prtDB.zip
打印数据库表格(39KB)
599,p011_dbprint.zip
数据库打印的例子(7KB)
600,p010_print.zip
一个调用打印机的VB程序范例(8KB)
601,p009_vbSimple35.zip
打印预览(21KB)
602,p008_prview32.zip
VB中用OLE服务实现打印预览的功能(87KB)
603,p007_prnprv3.zip
如何使用VB实现打印预览(32KB)
604,p006_prnView.zip
打印模拟(13KB)
605,p005_vbTip10.zip
避免 Print 时印出 空白的前置字元(2KB)
606,p004_spool.zip
发送脱机打印任务(5KB)
607,p003_orient.zip
改变缺省的打印方向(3KB)
608,p002.zip
VB5/6中增加打印预览功能(78KB)
609,p001.zip
简单的打印文件的例子(5KB)
610,o046_4.zip
识别常数的简单四则运算(3KB)'
611,o045_dhsz.zip
象钟面一样有时针、分针和秒针(3KB)
612,o044_zm045.zip
一个非常酷的机器人的源程序,你可以自己制作你喜欢的机器人并保存起来,很有意思哦(137KB)
613,o043_004101102.zip
TreeView的基本操作(5KB)
614,o042.zip
一个比较完整的源代码
615,o041_waker.zip
定时提醒 1.0 (12KB)
616,o040_zm035.zip
彻底清除“I Love You”病毒并介绍了病毒的原理及特征。Cool(32KB)
617,o039_72.zip
鼠标计程器(23KB)
618,o038_love.zip
情书生成器源代码(161KB)
619,o037_shellex5.zip
能打开默认的文件夹和默认的网站(7KB)
620,o035_shchangenotify.zip
未公开的COOL函数据(12KB)
621,o034_rotfont.zip
VB实现字体的旋转
622,o033_998162026.zip
制作安装程序常用的模块(2KB)
623,o032_play024.zip
对电子爱好者是一个不错的选择(7KB)
624,o031_Play39.zip
时间、空间大小等数据向字符串的很有用的转换(4KB)
625,o029_snow.zip
一个雪花飘落例子(3KB)
626,o028_zoomsys.zip
类似画图放大镜的东西(2KB)
627,o027_wiz2.zip
制作应用程序向导的例子(类似安装程序的界面)!(5KB)
628,o025_StopWatch.zip
“跑表”类 ,VB 提供的 Timer 控件的精度好象可以达到 1 毫秒,但实际上只能达到几十毫秒。此“跑表”类使用多媒体的定时器而真正提供精确到 1 毫秒的定时(1KB)
629,o024_timer.zip
这是一个VB6编写的数码钟(4KB)
630,o023_clock.zip
指针式的时钟(3KB)
631,o021_viewpw.zip
密码查看器(7KB)
632,o020_calendar.zip
一个小小的日历程序(4KB)
633,o019_getword.zip
读取鼠标所在位置的单词(5KB)
634,o018_up.zip
数字大写转换程序(8KB)
635,o017_zm020.zip
利用这个程序可以让你方便的管理你所收集的源程序VBCODE网站50几周来排行第一的源程序。强烈推荐! (200KB)
636,o016.zip
演示银河系的例子 (28KB)
637,o015.zip
计数器(10KB)
638,o014.zip
文件加密/解密的例子 (345KB)
639,o013.zip
将十亿以内的数字转换成文本文字(4KB)
640,o012.zip
十进制数转换成罗马数字(1KB)
641,o011.zip
16进制数转换成十进制, 16进制转换成二进制等(1KB)
642,o010.zip
转换二进制数为16进制数(1KB)
643,o009.zip
指定两个日期, 计算相隔的天数(2KB)
644,o008.zip
非常COOL的文字效果(9KB)
645,o007.zip
Ceaser转换文本加密技术,由Julius Ceaser提出 COOL(7KB)
646,o006.zip
允许你让EXE文件在用户第一次使用时输入用户名和序列号, 并将信息存储在EXE文件中(5KB)
647,o005.zip
简单的例子(4KB)
648,o004.zip
加密/解密字符串的例子(9KB)
649,o003.zip
密码存储程序(2KB)
650,o002.zip
VB做的CGI程序,演示了如何做一个网上的电子交易系统(91KB)
651,vbNumerical11.htm
Least-Squares curve fitting by using an arbitrary order polynomial as approximating function.(11KB)
652,vbNumerical12.htm
Matrix Inversion by Gauss-Jordan Elimination with maximization of pivot elements.(12KB)
653,vbNumerical13.htm
Least-Squares curve fitting with statistical analysis by using an arbitrary order polynomial (17KB)
654,vbNumerical14.htm
valuate an integral by using Romberg integration. (9KB)
655,vbNumerical15.htm
Solve the matrix eigenvalue problem by using Hotelling's deflation method.(15KB)
656,vbNumerical16.htm
Solve the integral of discrete evenly and unevenly spaced points by using trapezoidal or Simpson's rule. (13KB)
657,vbNumerical17.htm
Evaluate the determinant of a square matrix by using Gauss Elimination with maximization
of pivot elements.(7KB)
658,vbNumerical18.htm
Solve a set of simultaneous linear equations including determinant calculation by Gauss-Jordan
Elimination with maximization of pivot elements.(5KB)
659,vbNumerical19.htm
Solve a set of simultaneous linear equations including determinant calculation by Gauss Elimination
with maximization of pivot elements.(5KB)
660,vbNumerical20.htm
Matrix Inversion including determinant calculation by Gauss-Jordan Elimination with
maximization of pivot elements.(5KB)
661,prnprv3.zip
vb5/6中增加打印预览功能(78KB)
662,vbprint.zip
vb使用打印功能的add-in(764KB)
663,spool.zip
打印文件的例子(5KB)
664,versioninfo.zip
从dll或exe文件中获得版本信息(3KB)
665,shellwait.zip
程序中运行另一个exe程序直到它运行结束(1KB)
666,unloadforms.zip
卸装所有的forms(1KB)
667,startfile.zip
程序中运行另一个exe程序(6KB)
668,killapp.zip
终止另一个程序(3KB)
669,jdsaver.zip
一个简单的屏幕保护程序(13KB)
670,ssaver.zip
在屏幕上卷滚文字的屏幕保护程序 (8KB)
671,scrsaver.zip
一个简单的屏幕保护程序(5KB)
672,scrnsavr.zip
两个屏幕保护程序(39KB)
673,saver.zip
一个简单的屏幕保护程序(7KB)
674,crypt.zip
密码存储程序(2KB)
675,enigma.zip
一个德国的enigma加密技术例子 cool(10KB)
676,ceaser.zip
ceaser转换文本加密技术,由julius ceaser提出 cool(7KB)
677,registry.zip
读和写注册表文件的例子(7KB)
678,xcopy.zip
模仿dos命令xcopy的功能(3KB)
679,winpaths.zip
得到计算机上windows目录和系统目录(3KB)
680,tray.zip
实现托盘程序(9KB)
681,drvspace.zip
显示磁盘的剩余空间(2KB)
682,keycheck.zip
键盘检测程序(5KB)
683, getdrives.zip
得到驱动器的详细资料(7KB)
684,getcompname.zip
得到计算机名称(2KB)
685,systeminfo.zip
显示详细的系统资料(11KB)
686,watchdir.zip
监控一个指定的目录, 当这个目录有文件删除或有文件增加, 监控程序将显示相关信息(4KB)
687,turnoff.zip
关机/重启动的程序(20KB)
688,controlpanel.zip
访问控制面板的方法(2KB)
689,screenres.zip
得到计算机屏幕的大小(2KB)
690,editregistry.zip
编辑注册表 (2KB)
691,stop.zip
锁定计算机的程序(5KB)
692,wbasket.zip
文件移动到垃圾箱中(2KB)
693,opsys.zip
得到操作系统的信息(12KB)
694,ctaskmanager.zip
windows任务管理程序(12KB)
695,cntrlpnl.zip
访问控制面板(12KB)
696,copyscr.zip
拷贝屏幕到picture box(2KB)
697, registryb.zip
读注册表信息(5KB)
698,registry5.zip
读/写注册表(10KB)
699,hideshowtaskbar.zip
显示/隐藏任务条(3KB)
700,taskhide.zip
隐藏一个任务(2KB)
701,clipcurs.zip
限制鼠标的区域(3KB)
702, kidnap.zip
捆绑程序(8KB)
703,netuse.zip
演示连接/断开network(3KB)
704,winntsecurity.zip
关于windows nt安全性的程序(6KB)
705,code_format_disk.zip
格式化磁盘的例子(8KB)
706,01ss1632.zip
创建一个屏幕保护程序所用到的ole dll和使用例子(263KB)
707,cpocket.zip
统托盘(tray)控件(691KB)
708,tskvb4.zip
一个系统托盘(tray)例子(13KB)
709,scrnres.zip
使用windows api得到屏幕的大小(3KB)
710,taskswth.zip
调用api实现任务转换和得到当前活动任务名称(4KB)
711,vbhlp32.zip
vb helper:一个写帮助文件的dll(31KB)
712,loads.zip
将动态连接库预先装入内存以提高程序的运行速度(35KB)
713, toolsdll.zip
一个提供磁盘功能动态库, 包括确认文件是否存在, 磁盘空间等功能(132KB)
714,vbfindid.zip
找到窗口或控制的id及类信息(9KB)
715,rbbwin11.zip
在basic中执行一些特殊的指令(如重启计算机等)(1230KB)
716,drivetyp.zip
监测用户安装了何种类型的驱动器,包括"软驱","硬盘","cd-rom","网络驱动器"等(3KB)
717, inout.zip
如何在vb中调用i/o口的例子(10KB)
718,mouseleavetest.zip
vb中定义了mousemove事件,但不能捕捉mouseleave事件,此程序交你如何捕捉mouseleave事件(8KB)
719,progman.zip
制作安装程序必备,此模块包含的sub及function能帮你做出专业的安装程序(2KB)
720,windows5.zip
如何得到当前windows的版本号(7KB)
721,group.zip
读取 win95 组的三种方法及组中建快捷键(15KB)
722,shutdown.zip
模拟关机程序, 作者:小乐(mailto:xiaole@telekbird.com.cn)(6KB)
723,associate.zip
建立文件关联, 例子演示把 .bar 文件与 notepad 建立关联(2KB)
724,磁盘空间.zip
磁盘使用情况(3KB)
725,bwindowontop.zip
使窗口显示在最前面的例子(1KB)
726,richtext.zip
编辑rtf文件程序, 需要active threed control(30KB)
727,rtf.zip
演示rtf控制的功能(16KB)
728,mdi-temp.zip
实现多文档界面的记事本, 需要active threed control(29KB)
729,textedit.zip
类似记事本的简单文本编辑器(9KB)
730,toupper.zip
在textbox中输入大写文本(2KB)
731,wordover.zip
鼠标移动到richtext box中时查看单词(3KB)
732,editmenu.zip
在richtext box中增加右击菜单(5KB)
733,xmsnotepad.zip
xms记事本(23KB)
734,textefx.zip
非常cool的文字效果(9KB)
735,rtfprn.zip
打印richtext box中的内容(8KB)
736,lword.zip
一个简单的单词处理程序(46KB)
737,rotfont.zip
vb中的字都是水平的,可否想过作出有角度的字,在这里演示了作旋转的字的方法(4KB)
738,txtsrch.zip
在text中实现快速增量查询(4KB)
739,alphanumsortdll.zip
按字母和数字排序的例子(1527KB)
740,ccdemo.zip
演示调用windows的颜色对话框(258KB)
741,cfdemo.zip
演示调用windows的字体对话框(281KB)
742,reg221.zip
注册使用ocx的例子(51KB)
743,ropdemo.zip
演示windows api的光栅操作(277KB)
744, jkcgi.zip
使用dll创建cgi程序(181KB)
745,fsextext.zip
显示多种函数效果的例子(228KB)
746,shfileop.zip
显示win95 api的一些函数(4KB)
747,iconextr.zip
从动态库, 执行文件或ico文件中读取图标(3KB)
748,virtlogo.zip
显示logo的例子(8KB)
749,calendar.zip
日历程序(13KB)
750,aboutbox.zip
windows关于窗口(1KB)
751,vblib.zip
装入不同的form(44KB)
752,vbio32.zip
问端口的程序(17KB)
753,countdown.zip
计数器(10KB)
754,galaxy.zip
演示银河系的例子(28KB)
755,rocket.zip
小图形的快速移动(9KB)
756,hlitactx.zip
加亮鼠标所在的区域(4KB)
757,appbar4.zip
模拟windows 95/98的任务条(3KB)
758, keyboard5.zip
显示键盘信息(7KB)
759,listsrch.zip
在列表框中快速查找和定位子项(7KB)
760,quiksrch.zip
在列表框或组合框中查找子项(3KB)
761,vba.zip
莱卡数据处理VBA(203KB)
762,SysMonth.zip
调用系统日历(5KB)
763,haha.zip
屏幕旋转180度(10KB)
764,undocsh.zip
未公开的Shell.dll 函数(11KB)
765,mousedemo.zip
鼠标性能演示程序(47KB)
766,winpaper.zip
墙纸定时更换器程序(70KB)
767,game.zip
游戏(57KB)
768,destroy.zip
电脑安全卫士(46KB)
769,encrypt1.zip
文本文件加密器1 (54KB)
770,card.zip
名片管理(35KB)
771,cihsafe.zip
CIH病毒免疫程序(63KB)
772,wb1-zippack.zip
密码小管家(13KB)
773,heibai.zip
黑白棋(6KB)
774,imdshtdown.zip
一个倒计时的程序,时间到则关闭系统(9KB)
775,iconproc.zip
1个图标操作的技巧,1个图标有5种显示效果(正常、无准备、选择、等等) (14KB)
776,money.zip
货币的数字到中文换算(2KB)
556,delay1.zip 源码设计中的延时功能(1KB)557,type_1.zip 趣味打字2.1(233KB)558,test1.zip asp编写动态网页计数器(1KB)559,hztosm.zip 汉字转声母完全源代码(90KB)560,formatfloppy.zip 格式化软盘源代码(13KB)561,freespace.zip 获取磁盘剩余空间(3KB)562,setscreen 设置屏幕分辨率(7KB)563,snapwindow.zip 一个抓图的小程序(14KB)564,hotrgn.zip 热区的应用(6KB)565,getserial.zip 读出驱动器序列号,可以制作加密安装盘(2KB)566,opencdrom.zip 可以程序控制打开或关闭CDROM,非常方便(2KB)567,getusername.zip 自动读取用户登陆名称,再进行密码验证(2KB)568,gethostname.zip 读取机器名称(2KB)569,printpic.zip 解决图形打印的问题(50KB)570,g029_pcl.zip拼图游戏(56KB)571,g028_octopus.zip一个简单的掌上游戏机的游戏,这个游戏机的内容是要逃过大章鱼的捕捉(408KB)572,g027_menace.zip仓库世家-推箱子的游戏(114KB)573,g026_breKthru.zip弹珠台游戏(41KB)574,g025_zhq.zip一个能考考你的智慧的智慧棋(17KB)575,g024_vb-sol.zipVB 的扑克牌游戏的源码(15KB)576,g023_picgame.zip一个好玩的拼图游戏(25KB)577,g021_zm015看着超级玛莉不停的追赶着你的鼠标,是不是很有意思呢?(25KB)578,g020_zm019一个拼图游戏,可以自己指定图片进行游戏(12KB)579,g019_zm011一个网络五子棋的源程序(并有聊天功能)(41KB)580,g018_zm010.zip中国象棋的源程序,支持网络作战(23KB)581,g0173维的breaKthrough游戏(8KB)582,g016.zip小蜜蜂射击游戏源程序, 不仅演示了 vb 的图形操作技巧,键盘操作,还演示了怎样使用 npmod32.dll(已包含,免费) 来播mod,s3m,mpp,med,xm,it,mdz,itz,xmz,s3z 等音乐格式文件(208KB)583,g015.zip旋转俄罗斯 1.0 demo 版的源程序vb5 版存贮,稍加修改即适合于 vb4、vb3。里面有用 vb 处理俄罗斯方块的核心内容及简单注释(8KB)584,g014.zipbreakthrough游戏(保持小球在屏幕上跳动)源程序(50KB)585,g013.zip3维迷宫游戏的源程序(40KB)586,g012.zip射击(导弹)游戏的源程序(5KB)587,g011.zip生命游戏源程序(12KB)588,g010.zip一个精灵游戏源程序(33KB)589,g009.zip翻转棋游戏(64子, 每子正反面分别为黑白两色, 两人对弈)的源程序(29)590,g008.zip纸牌游戏源程序(45KB)591,g007.zip太空船游戏例子源程序(48KB)592,g006.zip用白雪做背面的俄罗斯方块(1.0版),自带EXE(224KB)593,g005.zip个人娱乐游戏,自带EXE(25KB)594,g004.zip个个人自娱乐的扑克牌游戏(57KB)595,g003.zip代表和平的娱乐游戏,自带EXE(12KB)596,g002.zip一个迷宫游戏,还有地图编辑器呢,完全源码(230KB)597,g001.zip模仿windows中的扫雷,自带EXE(38KB)
556,delay1.zip
源码设计中的延时功能(1KB)
557,type_1.zip
趣味打字2.1(233KB)
558,test1.zip
asp编写动态网页计数器(1KB)
559,hztosm.zip
汉字转声母完全源代码(90KB)
560,formatfloppy.zip
格式化软盘源代码(13KB)
561,freespace.zip
获取磁盘剩余空间(3KB)
562,setscreen
设置屏幕分辨率(7KB)
563,snapwindow.zip
一个抓图的小程序(14KB)
564,hotrgn.zip
热区的应用(6KB)
565,getserial.zip
读出驱动器序列号,可以制作加密安装盘(2KB)
566,opencdrom.zip
可以程序控制打开或关闭CDROM,非常方便(2KB)
567,getusername.zip
自动读取用户登陆名称,再进行密码验证(2KB)
568,gethostname.zip
读取机器名称(2KB)
569,printpic.zip
解决图形打印的问题(50KB)
570,g029_pcl.zip
拼图游戏(56KB)
571,g028_octopus.zip
一个简单的掌上游戏机的游戏,这个游戏机的内容是要逃过大章鱼的捕捉(408KB)
572,g027_menace.zip
仓库世家-推箱子的游戏(114KB)
573,g026_breKthru.zip
弹珠台游戏(41KB)
574,g025_zhq.zip
一个能考考你的智慧的智慧棋(17KB)
575,g024_vb-sol.zip
VB 的扑克牌游戏的源码(15KB)
576,g023_picgame.zip
一个好玩的拼图游戏(25KB)
577,g021_zm015
看着超级玛莉不停的追赶着你的鼠标,是不是很有意思呢?(25KB)
578,g020_zm019
一个拼图游戏,可以自己指定图片进行游戏(12KB)
579,g019_zm011
一个网络五子棋的源程序(并有聊天功能)(41KB)
580,g018_zm010.zip
中国象棋的源程序,支持网络作战(23KB)
581,g017
3维的breaKthrough游戏(8KB)
582,g016.zip
小蜜蜂射击游戏源程序, 不仅演示了 vb 的图形操作技巧,键盘操作,还演示了怎样使用 npmod32.dll(已包含,免费) 来播mod,s3m,mpp,med,xm,it,mdz,itz,xmz,s3z 等音乐格式文件(208KB)
583,g015.zip
旋转俄罗斯 1.0 demo 版的源程序vb5 版存贮,稍加修改即适合于 vb4、vb3。里面有用 vb 处理俄罗斯方块的核心内容及简单注释(8KB)
584,g014.zip
breakthrough游戏(保持小球在屏幕上跳动)源程序(50KB)
585,g013.zip
3维迷宫游戏的源程序(40KB)
586,g012.zip
射击(导弹)游戏的源程序(5KB)
587,g011.zip
生命游戏源程序(12KB)
588,g010.zip
一个精灵游戏源程序(33KB)
589,g009.zip
翻转棋游戏(64子, 每子正反面分别为黑白两色, 两人对弈)的源程序(29)
590,g008.zip
纸牌游戏源程序(45KB)
591,g007.zip
太空船游戏例子源程序(48KB)
592,g006.zip
用白雪做背面的俄罗斯方块(1.0版),自带EXE(224KB)
593,g005.zip
个人娱乐游戏,自带EXE(25KB)
594,g004.zip
个个人自娱乐的扑克牌游戏(57KB)
595,g003.zip
代表和平的娱乐游戏,自带EXE(12KB)
596,g002.zip
一个迷宫游戏,还有地图编辑器呢,完全源码(230KB)
597,g001.zip
模仿windows中的扫雷,自带EXE(38KB)
598,p012_prtDB.zip
打印数据库表格(39KB)
599,p011_dbprint.zip
数据库打印的例子(7KB)
600,p010_print.zip
一个调用打印机的VB程序范例(8KB)
601,p009_vbSimple35.zip
打印预览(21KB)
602,p008_prview32.zip
VB中用OLE服务实现打印预览的功能(87KB)
603,p007_prnprv3.zip
如何使用VB实现打印预览(32KB)
604,p006_prnView.zip
打印模拟(13KB)
605,p005_vbTip10.zip
避免 Print 时印出 空白的前置字元(2KB)
606,p004_spool.zip
发送脱机打印任务(5KB)
607,p003_orient.zip
改变缺省的打印方向(3KB)
608,p002.zip
VB5/6中增加打印预览功能(78KB)
609,p001.zip
简单的打印文件的例子(5KB)
610,o046_4.zip
识别常数的简单四则运算(3KB)'
611,o045_dhsz.zip
象钟面一样有时针、分针和秒针(3KB)
612,o044_zm045.zip
一个非常酷的机器人的源程序,你可以自己制作你喜欢的机器人并保存起来,很有意思哦(137KB)
613,o043_004101102.zip
TreeView的基本操作(5KB)
614,o042.zip
一个比较完整的源代码
615,o041_waker.zip
定时提醒 1.0 (12KB)
616,o040_zm035.zip
彻底清除“I Love You”病毒并介绍了病毒的原理及特征。Cool(32KB)
617,o039_72.zip
鼠标计程器(23KB)
618,o038_love.zip
情书生成器源代码(161KB)
619,o037_shellex5.zip
能打开默认的文件夹和默认的网站(7KB)
620,o035_shchangenotify.zip
未公开的COOL函数据(12KB)
621,o034_rotfont.zip
VB实现字体的旋转
622,o033_998162026.zip
制作安装程序常用的模块(2KB)
623,o032_play024.zip
对电子爱好者是一个不错的选择(7KB)
624,o031_Play39.zip
时间、空间大小等数据向字符串的很有用的转换(4KB)
625,o029_snow.zip
一个雪花飘落例子(3KB)
626,o028_zoomsys.zip
类似画图放大镜的东西(2KB)
627,o027_wiz2.zip
制作应用程序向导的例子(类似安装程序的界面)!(5KB)
628,o025_StopWatch.zip
“跑表”类 ,VB 提供的 Timer 控件的精度好象可以达到 1 毫秒,但实际上只能达到几十毫秒。此“跑表”类使用多媒体的定时器而真正提供精确到 1 毫秒的定时(1KB)
629,o024_timer.zip
这是一个VB6编写的数码钟(4KB)
630,o023_clock.zip
指针式的时钟(3KB)
631,o021_viewpw.zip
密码查看器(7KB)
632,o020_calendar.zip
一个小小的日历程序(4KB)
633,o019_getword.zip
读取鼠标所在位置的单词(5KB)
634,o018_up.zip
数字大写转换程序(8KB)
635,o017_zm020.zip
利用这个程序可以让你方便的管理你所收集的源程序VBCODE网站50几周来排行第一的源程序。强烈推荐! (200KB)
636,o016.zip
演示银河系的例子 (28KB)
637,o015.zip
计数器(10KB)
638,o014.zip
文件加密/解密的例子 (345KB)
639,o013.zip
将十亿以内的数字转换成文本文字(4KB)
640,o012.zip
十进制数转换成罗马数字(1KB)
641,o011.zip
16进制数转换成十进制, 16进制转换成二进制等(1KB)
642,o010.zip
转换二进制数为16进制数(1KB)
643,o009.zip
指定两个日期, 计算相隔的天数(2KB)
644,o008.zip
非常COOL的文字效果(9KB)
645,o007.zip
Ceaser转换文本加密技术,由Julius Ceaser提出 COOL(7KB)
646,o006.zip
允许你让EXE文件在用户第一次使用时输入用户名和序列号, 并将信息存储在EXE文件中(5KB)
647,o005.zip
简单的例子(4KB)
648,o004.zip
加密/解密字符串的例子(9KB)
649,o003.zip
密码存储程序(2KB)
650,o002.zip
VB做的CGI程序,演示了如何做一个网上的电子交易系统(91KB)
651,vbNumerical11.htm
Least-Squares curve fitting by using an arbitrary order polynomial as approximating function.(11KB)
652,vbNumerical12.htm
Matrix Inversion by Gauss-Jordan Elimination with maximization of pivot elements.(12KB)
653,vbNumerical13.htm
Least-Squares curve fitting with statistical analysis by using an arbitrary order polynomial (17KB)
654,vbNumerical14.htm
valuate an integral by using Romberg integration. (9KB)
655,vbNumerical15.htm
Solve the matrix eigenvalue problem by using Hotelling's deflation method.(15KB)
656,vbNumerical16.htm
Solve the integral of discrete evenly and unevenly spaced points by using trapezoidal or Simpson's rule. (13KB)
657,vbNumerical17.htm
Evaluate the determinant of a square matrix by using Gauss Elimination with maximization
of pivot elements.(7KB)
658,vbNumerical18.htm
Solve a set of simultaneous linear equations including determinant calculation by Gauss-Jordan
Elimination with maximization of pivot elements.(5KB)
659,vbNumerical19.htm
Solve a set of simultaneous linear equations including determinant calculation by Gauss Elimination
with maximization of pivot elements.(5KB)
660,vbNumerical20.htm
Matrix Inversion including determinant calculation by Gauss-Jordan Elimination with
maximization of pivot elements.(5KB)
661,prnprv3.zip
vb5/6中增加打印预览功能(78KB)
662,vbprint.zip
vb使用打印功能的add-in(764KB)
663,spool.zip
打印文件的例子(5KB)
664,versioninfo.zip
从dll或exe文件中获得版本信息(3KB)
665,shellwait.zip
程序中运行另一个exe程序直到它运行结束(1KB)
666,unloadforms.zip
卸装所有的forms(1KB)
667,startfile.zip
程序中运行另一个exe程序(6KB)
668,killapp.zip
终止另一个程序(3KB)
669,jdsaver.zip
一个简单的屏幕保护程序(13KB)
670,ssaver.zip
在屏幕上卷滚文字的屏幕保护程序 (8KB)
671,scrsaver.zip
一个简单的屏幕保护程序(5KB)
672,scrnsavr.zip
两个屏幕保护程序(39KB)
673,saver.zip
一个简单的屏幕保护程序(7KB)
674,crypt.zip
密码存储程序(2KB)
675,enigma.zip
一个德国的enigma加密技术例子 cool(10KB)
676,ceaser.zip
ceaser转换文本加密技术,由julius ceaser提出 cool(7KB)
677,registry.zip
读和写注册表文件的例子(7KB)
678,xcopy.zip
模仿dos命令xcopy的功能(3KB)
679,winpaths.zip
得到计算机上windows目录和系统目录(3KB)
680,tray.zip
实现托盘程序(9KB)
681,drvspace.zip
显示磁盘的剩余空间(2KB)
682,keycheck.zip
键盘检测程序(5KB)
683, getdrives.zip
得到驱动器的详细资料(7KB)
684,getcompname.zip
得到计算机名称(2KB)
685,systeminfo.zip
显示详细的系统资料(11KB)
686,watchdir.zip
监控一个指定的目录, 当这个目录有文件删除或有文件增加, 监控程序将显示相关信息(4KB)
687,turnoff.zip
关机/重启动的程序(20KB)
688,controlpanel.zip
访问控制面板的方法(2KB)
689,screenres.zip
得到计算机屏幕的大小(2KB)
690,editregistry.zip
编辑注册表 (2KB)
691,stop.zip
锁定计算机的程序(5KB)
692,wbasket.zip
文件移动到垃圾箱中(2KB)
693,opsys.zip
得到操作系统的信息(12KB)
694,ctaskmanager.zip
windows任务管理程序(12KB)
695,cntrlpnl.zip
访问控制面板(12KB)
696,copyscr.zip
拷贝屏幕到picture box(2KB)
697, registryb.zip
读注册表信息(5KB)
698,registry5.zip
读/写注册表(10KB)
699,hideshowtaskbar.zip
显示/隐藏任务条(3KB)
700,taskhide.zip
隐藏一个任务(2KB)
701,clipcurs.zip
限制鼠标的区域(3KB)
702, kidnap.zip
捆绑程序(8KB)
703,netuse.zip
演示连接/断开network(3KB)
704,winntsecurity.zip
关于windows nt安全性的程序(6KB)
705,code_format_disk.zip
格式化磁盘的例子(8KB)
706,01ss1632.zip
创建一个屏幕保护程序所用到的ole dll和使用例子(263KB)
707,cpocket.zip
统托盘(tray)控件(691KB)
708,tskvb4.zip
一个系统托盘(tray)例子(13KB)
709,scrnres.zip
使用windows api得到屏幕的大小(3KB)
710,taskswth.zip
调用api实现任务转换和得到当前活动任务名称(4KB)
711,vbhlp32.zip
vb helper:一个写帮助文件的dll(31KB)
712,loads.zip
将动态连接库预先装入内存以提高程序的运行速度(35KB)
713, toolsdll.zip
一个提供磁盘功能动态库, 包括确认文件是否存在, 磁盘空间等功能(132KB)
714,vbfindid.zip
找到窗口或控制的id及类信息(9KB)
715,rbbwin11.zip
在basic中执行一些特殊的指令(如重启计算机等)(1230KB)
716,drivetyp.zip
监测用户安装了何种类型的驱动器,包括"软驱","硬盘","cd-rom","网络驱动器"等(3KB)
717, inout.zip
如何在vb中调用i/o口的例子(10KB)
718,mouseleavetest.zip
vb中定义了mousemove事件,但不能捕捉mouseleave事件,此程序交你如何捕捉mouseleave事件(8KB)
719,progman.zip
制作安装程序必备,此模块包含的sub及function能帮你做出专业的安装程序(2KB)
720,windows5.zip
如何得到当前windows的版本号(7KB)
721,group.zip
读取 win95 组的三种方法及组中建快捷键(15KB)
722,shutdown.zip
模拟关机程序, 作者:小乐(mailto:xiaole@telekbird.com.cn)(6KB)
723,associate.zip
建立文件关联, 例子演示把 .bar 文件与 notepad 建立关联(2KB)
724,磁盘空间.zip
磁盘使用情况(3KB)
725,bwindowontop.zip
使窗口显示在最前面的例子(1KB)
726,richtext.zip
编辑rtf文件程序, 需要active threed control(30KB)
727,rtf.zip
演示rtf控制的功能(16KB)
728,mdi-temp.zip
实现多文档界面的记事本, 需要active threed control(29KB)
729,textedit.zip
类似记事本的简单文本编辑器(9KB)
730,toupper.zip
在textbox中输入大写文本(2KB)
731,wordover.zip
鼠标移动到richtext box中时查看单词(3KB)
732,editmenu.zip
在richtext box中增加右击菜单(5KB)
733,xmsnotepad.zip
xms记事本(23KB)
734,textefx.zip
非常cool的文字效果(9KB)
735,rtfprn.zip
打印richtext box中的内容(8KB)
736,lword.zip
一个简单的单词处理程序(46KB)
737,rotfont.zip
vb中的字都是水平的,可否想过作出有角度的字,在这里演示了作旋转的字的方法(4KB)
738,txtsrch.zip
在text中实现快速增量查询(4KB)
739,alphanumsortdll.zip
按字母和数字排序的例子(1527KB)
740,ccdemo.zip
演示调用windows的颜色对话框(258KB)
741,cfdemo.zip
演示调用windows的字体对话框(281KB)
742,reg221.zip
注册使用ocx的例子(51KB)
743,ropdemo.zip
演示windows api的光栅操作(277KB)
744, jkcgi.zip
使用dll创建cgi程序(181KB)
745,fsextext.zip
显示多种函数效果的例子(228KB)
746,shfileop.zip
显示win95 api的一些函数(4KB)
747,iconextr.zip
从动态库, 执行文件或ico文件中读取图标(3KB)
748,virtlogo.zip
显示logo的例子(8KB)
749,calendar.zip
日历程序(13KB)
750,aboutbox.zip
windows关于窗口(1KB)
751,vblib.zip
装入不同的form(44KB)
752,vbio32.zip
问端口的程序(17KB)
753,countdown.zip
计数器(10KB)
754,galaxy.zip
演示银河系的例子(28KB)
755,rocket.zip
小图形的快速移动(9KB)
756,hlitactx.zip
加亮鼠标所在的区域(4KB)
757,appbar4.zip
模拟windows 95/98的任务条(3KB)
758, keyboard5.zip
显示键盘信息(7KB)
759,listsrch.zip
在列表框中快速查找和定位子项(7KB)
760,quiksrch.zip
在列表框或组合框中查找子项(3KB)
761,vba.zip
莱卡数据处理VBA(203KB)
762,SysMonth.zip
调用系统日历(5KB)
763,haha.zip
屏幕旋转180度(10KB)
764,undocsh.zip
未公开的Shell.dll 函数(11KB)
765,mousedemo.zip
鼠标性能演示程序(47KB)
766,winpaper.zip
墙纸定时更换器程序(70KB)
767,game.zip
游戏(57KB)
768,destroy.zip
电脑安全卫士(46KB)
769,encrypt1.zip
文本文件加密器1 (54KB)
770,card.zip
名片管理(35KB)
771,cihsafe.zip
CIH病毒免疫程序(63KB)
772,wb1-zippack.zip
密码小管家(13KB)
773,heibai.zip
黑白棋(6KB)
774,imdshtdown.zip
一个倒计时的程序,时间到则关闭系统(9KB)
775,iconproc.zip
1个图标操作的技巧,1个图标有5种显示效果(正常、无准备、选择、等等) (14KB)
776,money.zip
货币的数字到中文换算(2KB)
"^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

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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