用asp+xmlhttp编写web采集程序(11)


$source .=$buffer; } 
fclose($fp); 
file://查找$source中是否有<img ...src=".../...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[0]."<br>"; file://输出析取的图片信息 


?> 


该段程序的设计思路是:PHP程式判断是否输入了档案名称(网址URL或本机档案名),若不为空则以只读方式打开该档案;接着使用函式fgets(fp,length)取得档案指标fp所指的行并传回该行内长度为length-1 的字串,上例中就是1024-1=1023;然后利用字串比对剖析函式ereg()查找$source中是否含有<img ...src=".../...gif | jpg"> 

这样的标记(关于该函式在上篇中有详细的介绍);假如找到的话,则利用split()函式按一定的规则执行两次拆分,去掉标记中的<img...src=字符和"字符,结果得到数组splitres,其中的每一个元素都是以图形路径+文件名开头的数组;用for循环在屏幕上输出每个数组的第一个元素值,即我们所需要的所有图形路径+文件名。

其中函式sizeof($splitres)返回个数;在for循环中,依次将数组splitres的每个元素(也是数组)赋给数组变量imgname,并输出imgname的第一个元素值(为找到的一个图形路径+文件名),当执行下次循环时,删除变量imgname,达到重复使用的目的。大家可以仔细研究其中的奥妙。

好了,写好后,将abstractSRCfrompage.php3存到你的服务器指定目录下,启动Apache服务器,在浏览器中打开它,随便输入一个存在的网页名称或是远程URL,看看效果如何。

如果有兴趣,你可以尝试析取HTML文档中的任意感兴趣的信息,如果稍加改装,做一个网站文本搜索引擎岂不更妙?

正则表达式在UBB论坛中的应用
一、UBB代码的概念

什么是UBB代码?

UBB代码是HTML的一个变种。一般情况下,UBB论坛不允许你使用HTML代码,而只能用UBB代码替代HTML代码。

UBB代码是一套由流行的UBB标签组成了固定代码,代码有统一的格式。用户只要遵循代码规则就可以实现用户想要的功能。如:想要显示粗体的how are you 字样,就应该输入 how are you而不是输入<b>how are you</b>

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/3140.html