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

使用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 :定界符模式中的括号表达式也会被捕获并返回

——————————————————————————–

关注微信公众号“阅享屋”可获取900G IT教学视频和JAVA、前端电子书籍
这里写图片描述

阅读更多
版权声明:未经允许不得转载 https://blog.csdn.net/liu_c_y/article/details/49952657
个人分类: php
上一篇php后台“爬虫”模拟登录第三方系统(一)---cURL的介绍
下一篇php后台“爬虫”模拟登录第三方系统(三)---模拟登录学校正方系统
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭