当前位置:编程学习 > php >>

火车头采集器的正则匹配语法例子

不太明白火车头采集器的正则表达式,有人举个例子吗,例如采集邮箱和域名以及论坛

答案:

前字符串(?<content>[\s\S]*?)后字符串 【注:[\s\S]* 可匹配任意字符,也可替换成您需要的正则】

而对于火车头采集器一般邮箱(Email)地址的正则表达式如下:

(?<content>\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*?)

简单解释一下就是\w+([-+.]\w+)*匹配由数字、字母、连接符和点组成的字符串

测试过程中发现如果邮箱地址后面带中文则中文也会被采集,故修改后的正则表达式如下(不会再采集中文):

(?<content>\w+([-+.]\w+)*@\w+([-.]\w+)*\.[a-z]{2,3}([\.][a-z]{2})?)

修改的思路来自以下一段PHP采集页面邮箱地址的小程序中的正则匹配规则:

  • <?php
  • $url='http://www.zhaoxi.net';
  • $content=file_get_contents($url);
  • function getEmail($str) {
  •     $pattern = "/([a-z0-9\-_\.]+@[a-z0-9]+\.[a-z0-9\-_\.]+)/";
  •     preg_match_all($pattern,$str,$emailArr);
  •     return $emailArr[0];
  • }
  • print_r( getEmail($content));
  • ?>
其他:

(<div class="article">|<tr><td class="newscontent">|)(?<content>[\s\S]*?)(<TBODY>|</div>)  前后匹配table和div,适合多变模板

火车头采集域名常用函数:(?<content>[w-]+.(com|net|org|gov|cc|biz|info|cn)(.(cn|hk))*?)

比如我们要获取火车论坛的版块,我们从首页获取,正则可以这样写:

上一个:php使用cur自动采集下载远程服务器图片方法
下一个:ajax保存值问题!

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,