【第21期】观点:人工智能到底用 GPU?还是用 FPGA?

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采集程序(爬虫)

前言 我们在写一个Web程序的时候,总会想着把自己的网站更美观一些,功能能更多一些,有时候写一些小的工具或者加上小的插件会让我们的站点更加完善。比如万年历功能,比如我们现在要讲的天气预报功能。 当...

php爬虫抓取信息及反爬虫相关

php爬虫首推Curl函数了,先来认识下它。 0x01.curl扩展的安装: 1.确保php子文件夹ext里面有php_curl.dll(一般都有的,一般配置时候会设置环境变量的) 2.将php...

网页抓取信息(php正则表达式、php操作excel)

1.问题描述 实现对固定网页上自己需要的信息抓取,以表格形式存储。我是拿wustoj上的一个排行榜来练习的,地址:wustoj 2.思路 网页自己就简单学习了一下php,刚好用它来做点事情吧,我的...

PHP 用户注册与登录

前言 网站用户注册与登录是很常用的一个功能,本节教材就以此来演示一下 PHP 中如何开发用户注册与登录模块。 本节需要用到的重点 PHP 基础知识: PHP 中预定义 $_POST 和 $_GE...

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

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

php模拟登陆正方管理系统

因为毕设需要学生和老师的数据,所以研究了一下正方系统的爬取,使用的是tp框架,所以源代码就以tp为例,如果你用的不是tp,那也只需要修改几个地方就可以.如果看完这篇博客后,还有什么疑问,可以在下方留言...

PHP模拟登陆正方系统获取课表、成绩(一看就懂!!!)

最近很多人问我到底怎么模拟登陆正方系统来抓取课表和成绩的,其实如果你知道了浏览器是怎么和服务器交互数据的话,实现起来就很简单了。 当我们输入学号、密码后点击登陆,浏览器会把我们的学号、密码或者验...

用php实现正方教务系统的模拟登陆

第一次用php实现模拟登陆真的是弄了好久,还挺好玩的就是,都是自己一点一点探索的收获还是慢慢的。到现在还有一点没弄明白的就是为什么不用提交验证码信息也能登陆,感觉可能是bug吧! 想要实现模拟登陆,首...

抓取正方课表-php

///////////////////2016/10/28////////////////// //////////////////by   xbw/////////////////////// ...

PHP的cURL技术实现课表、成绩等的查询

这些天用PHP的curl技术做了一个查询课表及成绩的网站,取名叫:微课表。看截图:     应用最外层是安卓构架的B/S应用,一个WebView插件解决,没什么好说的,在这里我只想说说模拟登...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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