ASP教程之正则表达式在收集编程中的使用(3)
强大的可扩展性。ASP具有强大的扩展性,可以实现与多种网络、硬件设备的连接:通过专用的通讯线路远程接入企业;通过远程拨号服务器为远程拨号客户提供服务;通过WAP为移动电话互联网客户服务。编程|收集|正则 使用实例在对正则表达式有了较为周全的懂得以后,就能够在Perl,PHP,和ASP等程式中利用正则表达式了。
上面以PHP言语为例,利用考证用户在线输出的邮件地点和网址的格局是不是准确。PHP供应了eregi()或ereg()材料处置函数完成字串比对分析的形式婚配操纵ereg()函数的利用格局以下:
ereg(pattern,string)
个中,pattern代表正则表达式的形式;而string则是实行查找交换操纵的方针工具,如Email地点值。本函式以pattern的划定规矩来分析比对字串string,找到则传回值为true。函式ereg()与eregi()的区分就是前者辨别巨细写,后者与巨细写有关。利用PHP编写的程序代码以下:
<?php
if(ereg("^()+@()+(.)+{2,3}$",$email))
{echo"您的E-Mail经由过程开端反省!";}
else
{echo"不是正当的E-Mail地点,请从头输出!";}
?>
这个例子是可对利用者输出的E-Mail作复杂的反省,反省利用者的E-Mail字串是不是有@字元,在@字元前有小写英笔墨母、数字或下"_",在@以后无数节字串,最初的小数点后只能有二个或三个小写英笔墨母。如webmaster@mail.sever.net,hello_2001@88new.cn就能够经由过程反省,而New99@253.com(呈现年夜写字母)和new99@253.comn(最初的小数点后只能凌驾3个英笔墨母)就不克不及经由过程反省。
我们经由过程挪用自界说正轨则辨别函式也能够举行反省操纵,以下面的网址查验函式:
functionVerifyWebSiteAddr($strWebSiteAddr){
return(eregi("^(+.)+(+.)+{2,3}$",$strWebSiteAddr));
}
我们晓得,PHP程式的运转必需有服务器撑持,假如您在本人的主页上想完成以上功效,嵌进式剧本言语Javascript也许是好的选择。JavaScript中带有一个功效壮大的RegExp()工具,能够用来举行正则表达式的婚配操纵。个中的test()办法能够查验方针工具中是不是包括婚配形式,并响应的前往true或false。只须在HTML文档的<head>地区增加一段Javascript代码。
<language="Javascript1.2">
functionverifyAddress(obj){
varemail=obj.email.value;
varpattern=/^()+@()+(.)+/;
flag=pattern.test(email);
if(flag){
alert("您的E-Mail经由过程开端反省!");
returntrue;}
else{
alert("不是正当的E-Mail地点,请从头输出!");
returnfalse;}
}
</script>
然后在网页中输出信息的表单域<form>标签地区内里到场一行以下代码:
<onSubmit="returnverifyAddress(this);">
当按下提交按钮后,起首运转verifyAddress()函式,举行婚配辨认,假如满意前提则发送表单信息到方针页面,不然前往毛病信息。
现实上,正则表达式的功效远非本文提到的这一点,下次,给人人先容一种利用正则表达式从恣意指定网页中析取恣意品种文本信息(如网页中一切的图片文件名)的技能。
Html源文件中image标签的析取
上篇,我们先容了正则表达式的观点及其在收集编程中利用正则表达式考证用户在线输出的邮件地点和网址的格局是不是准确的使用实例,明天先容一种从指定网页源文件中析取image标签的的编程技能,即从网页源文件中,剖析出一切的插图文件名(包含图片路径),也就是标签<imgsrc=http://www.163design.net/a/z/"....abc.jpg">中的文件名http://www.163design.net/a/z/"....abc.jpg"(有的多是gif格局)。编程情况:PHP+ApacheforWin98。
起首,用文本编纂器新建一个PHP范例的文件:abstractSRCfrompage.php3。为了便利解说,我们盘算是在扫瞄器表单域中输出必要析取image标签的网页的URL(或本机文档),提交后实行析取操纵,以是在该文件中,我们要创建一个用于输出网址的表单,举比方下:
<formaction="abstractSRCfrompage.php3"method="post">
输出网址<inputtype=textname=filename><br>
<inputtype=submitname=submitvalue="提交">
</form>
输出准确的网址,提交后表单信息被送到abstractSRCfrompage.php3页面,因为表单自己就在该页面,以是相称于被送到本身页面,上面我们必要编写析取处置的PHP代码,紧接着表单代码段后写进以下代码:
<?php
if($filename!=""){
$fp=fopen($filename,"r");file://若输出不为空,开启当地大概远程档案;
while($buffer=fgets($fp,1024)){
$source.=$buffer;}
fclose($fp);
file://查找$source中是不是有<img...src=http://www.163design.net/a/z/".....gif|jpg">如许的标志
if(eregi("(<img)+[^<>]+(src=")+[^*"<>|]+(.)+((gif)|(jpg))+(")",$source)){
echo"找到图片标签:)<br>";}
else{
echo"未发明图片标签:(<br>";}
file://拆分,第一次用标签,<img...src=拆分,失掉了以图形文件名开首的数组,
$splitres=split("((">)|())+(<img)+[^<>]+(src=")",$source);
echo"找到:$imagenums-1个图片<br>分离为:<br>";
for($i=1;$i<sizeof($splitres);$i++){
file://二次拆分,用"拆分。由于文件名能含有",失掉的拆分数组的第一个元素就是路径+文件名了;
unset($imgname);//再次利用前删除imgname变量;
$imgname=spliti(""",$splitres[$i]);//将析取的图片信息顺次赋给imgname变量
echo"$i=>".$imgname."<br>";file://输入析取的图片信息
}
}
?>
该段程序的计划思绪是:PHP程式判别是不是输出了档案称号(网址URL或本机档案名),若不为空则以只读体例翻开该档案;接着利用函式fgets(fp,length)获得档案目标fp所指的行并传回该行内长度为length-1的字串,上例中就是1024-1=1023;然后使用字串比对分析函式ereg()查找$source中是不是含有<img...src=http://www.163design.net/a/z/".....gif|jpg">如许的标志(关于该函式在上篇中有具体的先容);假设找到的话,则使用split()函式按必定的划定规矩实行两次拆分,往失落标志中的<img…src=字符和"字符,了局失掉数组splitres,个中的每个元素都是以图形路径+文件名开首的数组;用for轮回在屏幕上输入每一个数组的第一个元素值,即我们所必要的一切图形路径+文件名。
个中函式sizeof($splitres)前往个数;在for轮回中,顺次将数组splitres的每一个元素(也是数组)赋给数组变量imgname,并输入imgname的第一个元素值(为找到的一个图形路径+文件名),当实行下次轮回时,删除变量imgname,到达反复利用的目标。人人能够细心研讨个中的奇妙。
好了,写好后,将abstractSRCfrompage.php3存到你的服务器指定目次下,启动Apache服务器,在扫瞄器中翻开它,任意输出一个存在的网页称号或是远程URL,看看效果怎样。
假如有乐趣,你能够实验析取HTML文档中的恣意感乐趣的信息,假如略加改装,做一个网站文本搜刮引擎岂不更妙?</p>楼上说交互性不好,太牵强了吧。在微软提供的一套框架中,利用asp做网站,开发效率高,使用人数少,减少不必要的开销。交互性是互动方式,是有开发人员决定的。 学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点: 运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写,使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行。 ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象,这就明显产生以下几个问题: 下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。 运用经典的例子。并且自己可以用他来实现一些简单的系统。如果可以对他进行进一步的修改,找出你觉得可以提高性能的地方,加上自己的设计,那就更上一个层次了,也就会真正地感到有所收获。 另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件) 学习是为了用的,是为了让你的程序产生价值,把握住这个原则会比较轻松点。除此之外,课外时间一定要多参加一些社会实践活动,来锻炼自己的能力。 ASP的语言不仅仅只是命令格式差不多,而是包含在<%%>之内的命令完全就是VB语法。虽然ASP也是做为单独的一个技术来提出的,但他就是完全继承了VB所有的功能。
页:
[1]