php后台“爬虫”模拟登录第三方系统(二)---正则表达式的介绍

原创 2015年11月20日 22:12:56

使用cURL抓取到页面的数据是html 字符串 ,需要用正则表达式进行分割,存储到数组等地方。下面简单介绍一下php中的正则表达式。

正则表达式的概述

正则表达式(Regular expression,简写为Regexes)是一种用来操作和检验字符串数据的强大工具。它相当与一串特殊的字符,用它可以转换成算法,对文本进行匹配等操作。
在php中有两套正则表达式处理函数库。
PERE库,以“perg_”为前缀命名的函数,且表达式都应该被包含在定界符中。
POSIX扩展语法的正则表达式函数,使用以“ereg_”为前缀命名的函数。
两套函数库的功能相似,但PCRE库效率略占优势。

正则表达式的用途

1.测试字符串的某个模式。例如,可以对一个输入字符串进行测试,验证输入的字符串是否是邮箱,手机号等
2.替换文本。可以在文档中使用一个正则表达式来标识特定文字,然后可以全部将其删除,或者替换为别的文字。
3.根据模式匹配从字符串中提取一个子字符串。可以用来在文本或输入字段中查找特定文字。

正则表达式中常用的非打印字符

原子字符 含义描述
\cx 匹配由x指明的控制字符.例如:\cM匹配一个Control-M或回车
\f 匹配一个换页符
\n 匹配一个换行符
\r 匹配一个回车符
\t 匹配一个制表符、
\v 匹配一个垂直制表符
在window中匹配是否有回车换行出现用'/\n/'
在linux中匹配是否有回车换行出现用'/\r\n/'

正则表达式中常用”通用字符类型“

原子字符 含义
\d 匹配任意一个十进制数,等价[0-9]
\D 匹配任意一个除十进制数字以外的字符,等价[^0-9]
\s 匹配一个任意空白字符,空白字符指:制表符,回车符等。等价[\f\n\r\t\v]
\S 匹配一个除空白符外的任意字符,等价[^\f\n\r\t\v]
\w 匹配任意一个数字,字母或下划线,等价于[0-9a-zA-Z_]
\W 匹配任意一个除数字,字母或下划线,等价于[^0-9a-zA-Z_]

正则表达式的元字符

元字符 含义
* 匹配0次,1次或多次其前的原子
+ 匹配1次或多次
匹配0次或1次
. 匹配除换行符外的任意字符
| 匹配两个或多个的分支选择,”或”的功能
{n} 其前面的原子恰好出现n次
{n,m} 其前面的原子出现n次到m次
^或\A 字符串开始出现的开始位置,表示以什么开头
[^] ^在方括号内表示除什么以外
$或\Z 以什么结尾
\b 匹配单词的边界
\B 匹配除单词边界以外的部分
[] 方括号中指定任意一个原子、

模式修正符

在正则表达式定界符之外使用,既是在最后一个斜线”/“之后

模式修正符 功能
i 不区分大小写,例如:”/php/i”匹配时不区分大小写
s 模式中圆点元字符”.”,匹配所有字符,包括换行符
x 模式中的空白忽略不计
U 反转了匹配数量的值使它不是默认的重复,而变成在后面跟上“?”,才是重复。

php正则表达式函数

int preg_match(String pattern,String subject[,array maches])
pattern 正则表达式语法编写的模式
subject 被匹配的字符串
第三个参数数组用于存储第一个参数中各部分匹配的结果
<?php
$pattern = '/(http):\/\/(www\.)?([^\.\/]+)\.(com|net|cn)(\/[\w-\.\/\?\%\&\=]*)?/i';
/**
 *  (www\.)? 表示www.出现0次或者1次
 *  ([^\.\/]+) 表示除点.和/的任意一个或多个字符
 *  (com|net|cn) 表示com,net,cn,其中一个
 *  (\/[\w-\.\/\?\%\&\=]*)? 表示匹配 /index.php或/index.php?id=103等等后缀
 */
$subject = "网址为:http://scau.cn/index.php,欢迎登陆";
if(preg_match($pattern,$subject,$matches)){
    echo $matches[0]."<br>";
    echo $matches[1]."<br>";// (www\.)? 没有相应的匹配则为空
    echo $matches[2]."<br>";
    echo $matches[3]."<br>";
    echo $matches[4]."<br>";
    echo $matches[5]."<br>";
}else{
    echo "搜素失败";
}

这里写图片描述

函数int preg_mache_all(String pattern,String subject[,array maches)
与preg_mache类似,不同之处preg_mache函数在第一次匹配之后则停止搜索
preg_mache_all会搜索整个字符串
函数array preg_grep(string pattern,array input)
模式匹配input数组中的元素,函数返回匹配的数组元素
<?php
$pattern = '/^[a-zA-Z]+(\.|\d)+$/';//以一个或多个字母开头,以点或数字结尾
$array = array("zhangsan","lisi123","tiankong.34","100","dixia","dixia1.22.2");
$version = preg_grep($pattern,$array);
var_dump($version);

这里写图片描述

函数mixed preg_replace(mixed pattern,mixed replacement,mixed subject [,int limit])
执行表达式的搜索和替换,是PHP中一个最强大的字符串替换处理函数
subject用pattern正则表达式搜索,并用replacement的参数来替换,limit省略或-1则所有匹配项都要替换,否则仅替换limit个
函数 array preg_split(string pattern,string subject [,int limit [,int flags]])
第三个参数最多返回limit个字串,最后一个包含剩下的所有字串
第四个参数 标记组合用|连接
PERG_SPLIT_NO_EMPTY :返回非空成分
PERG_SPLIT_DELIM_CAPTURE :定界符模式中的括号表达式也会被捕获并返回

个人博客:http://www.javaknowledge.cn/?p=57

版权声明:

相关文章推荐

php 使用curl模拟登录人人(校内)网的简单实例

http://www.jb51.net/article/86003.htm $login_url = 'http://passport.renren.com/PLogin.do';...

【CURL】模拟登录网站并获取用户信息

模拟登录网站并获取用户信息前言这次来做的是通过代码的方式,模拟登录秒拍官网,获取登录用户的信息。前后端分离本文的标题是CURL,传统的网站是PHP代码直接渲染项目视图,通过表单提交到控制器直接进行数据...

php后台“爬虫”模拟登录第三方系统(三)---模拟登录学校正方系统

cookie维持客户端和服务器端的交互Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站...

php后台“爬虫”模拟登录第三方系统(一)---cURL的介绍

一.相关知识介绍在服务器后台使用爬虫对第三方进行模拟登录,登录后可进行数据收集。也可以作为第三方登录,用处之多,我便不做细讲。 所具备的的知识: 1.curl知识 2.sesson和cookie...

php简单爬虫使用登录账号密码爬取列表(爬虫二篇)

php简单爬虫使用登录账号密码爬取列表关于思路1.定义一个变量$data用来存放你想爬取网站的登录账号和密码以及是否‘记住密码’,此篇我以博客园为例 $data='input1=Dco4FpN...

php爬虫教程(二)数据请求分析

可以看到这个请求返回的就是整个页面的html,如果我们需要这里的某一个数据就可以通过正则匹配的方式匹配出来/(.*?)/ 这样title就被匹配出来了 这是我实际应用的一个代码段仅供参考。 f...

网页抓取:PHP实现网页爬虫方式小结

抓取某一个网页中的内容,需要对DOM树进行解析,找到指定节点后,再抓取我们需要的内容,过程有点繁琐。LZ总结了几种常用的、易于实现的网页抓取方式,如果熟悉JQuery选择器,这几种框架会相当简单。 ...

php爬虫教程(一) 简单的页面抓取

最近朋友抓取点数据,写了几个抓取数据的脚本。 主要功能是,分别抓起x了么,美x,x度外卖的餐厅和菜品数据 ,后期我把代码分享出来。 今天就先说说简单的页面抓取 -------------------...

php正则爬虫什么的,浅入系

闲来没事就帮运营的写了点小工具
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)