PHP函数preg_match_all正则表达式的基本使用详细解析


Posted in PHP onAugust 31, 2013

了解正则表达式之前,须要掌握一些常用的正则表达式的基础知识,这些如果能记得最好记得,记不住须要用的时候能查到就行,就多个特殊字符,所以说正则表达式玩的就是特殊,具体大家可以查看更加细致的说明。

preg_match_all函数具体说明大家可以查看PHP手册,本文运用 preg_match_all用于测试正则表达的效果。

实例代码:

$html = '<div id="biuuu">3water.com</div><div id="biuuu_2">3water.com2</div><div id="biuuu_3">3water.com3</div>';

实例要求:分别将每一个DIV元素的ID和内容取出,如biuuu,biuuu_2,biuuu_3,3water.com,3water.com2和3water.com3(一些常用的抓站要领就是这样匹配的)

分析:字符串是一个基本的HTML元素,每一个DIV元素对应该一个ID和内容,并且是独立的,首先考虑如何 取出一个DIV内的ID值和内容,如:3water.com,然后匹配其它类似的元素。一个DIV中须要取出两个值,也就是两个匹配的表达式,第一个表达式用于匹配ID值(biuuu),第二个表达式用于匹配ID的内容(3water.com),正则表达式常用的表达式运用小括号,那么前面的元素将会变成如下形式:
<div id="(biuuu)">(3water.com)</div>
<div id="(表达式1)">(表达式2)</div>

好,运用如上小括号把须要匹配的区域执行 了划分,接下来就是如何 匹配各个表达式内的内容,我们猜想一个ID可能是字母,数字或下划线,那这就变得基本了,运用中括号就可以实现,如下:

表达式1:[a-zA-Z0-9_]+ (表示匹配大小写字母,数字和下划线)
那如何 匹配表达式2,因为ID的内容可以是任意的字符,但是要留心,不能匹配<或>字符,因为如果匹配这两个字符将会把后面运用的DIV都匹配出来,因此须要排除这两个字符开始的元素,也就是不匹配以<或>字符,如下:

表达式2:[^<>]+ (表示不匹配<和>字符)
这样,须要匹配的子表达式就实现了,但是还要须要匹配一个 的表达式,要领如下:
表达式:/ '\"(表达式1)\"'>(表达式2)<\/div>/
留心其中的双引号"和/须要运用 \转义字符转义,然后把前面两个表达式放进去,
如下: '\"([a-z0-9_]+)\"'>/<div id=\"([a-z0-9_]+)\">([^<>]+)<\/div>/   

这样就实现一个匹配每一个DIV元素ID值和内容的正则表达式,然后运用 preg_match_all函数测试如下:

$html = '<div id="biuuu">3water.com</div><div id="biuuu_2">3water.com2</div><div id="biuuu_3">3water.com3</div>'; 
preg_match_all('/<div\sid=\"([a-z0-9_]+)\">([^<>]+)<\/div>/',$html,$result); 
var_dump($result);

结果:
array(3) { [0]=> array(3) 
{ [0]=> string(30) "<div id="biuuu">3water.com</div>" [1]=> string(33) "<div id="biuuu_2">3water.com2</div>" [2]=> string(33) "<div id="biuuu_3">3water.com3</div>" } [1]=> array(3) { [0]=> string(5) "biuuu" [1]=> string(7) "biuuu_2" [2]=> string(7) "biuuu_3" } [2]=> array(3) { [0]=> string(8) "3water.com" [1]=> string(9) "3water.com2" [2]=> string(9) "3water.com3" } }

共有三个表达式,分别显示每一个表达式匹配的值,并以数组的形式存储,这样就把每一个DIV元素的ID和内容取出。运用正则表达式最主要还是要知道须要什么,然后跟椐须要执行 匹配,并且思路清晰,并适当的借助preg_match_all函数执行 输出调试,非常方便。
PHP 相关文章推荐
十天学会php之第七天
Oct 09 PHP
php 生成静态页面的办法与实现代码详细版
Feb 15 PHP
php 网页播放器用来播放在线视频的代码(自动判断并选择视频文件类型)
Jun 03 PHP
PHP学习之数组值的操作
Apr 17 PHP
php中使用临时表查询数据的一个例子
Feb 03 PHP
php字符串截取的简单方法
Jul 04 PHP
PHP函数http_build_query使用详解
Aug 20 PHP
php计算整个mysql数据库大小的方法
Jun 19 PHP
php防止用户重复提交表单
Nov 02 PHP
将PHP程序中返回的JSON格式数据用gzip压缩输出的方法
Mar 03 PHP
php实现数据库的增删改查
Feb 26 PHP
Laravel统一错误处理为JSON的方法介绍
Oct 18 PHP
显示程序执行时间php函数代码
Aug 29 #PHP
php+js实现图片的上传、裁剪、预览、提交示例
Aug 27 #PHP
phpmyadmin config.inc.php配置示例
Aug 27 #PHP
PHP自动生成后台导航网址的最佳方法
Aug 27 #PHP
PHP连接局域网MYSQL数据库的简单实例
Aug 26 #PHP
php读取excel文件的简单实例
Aug 26 #PHP
PHP中判断变量为空的几种方法分享
Aug 26 #PHP
You might like
分享10段PHP常用代码
2015/11/11 PHP
PHP实现的自定义数组排序函数与排序类示例
2016/11/18 PHP
一个JS小玩意 几个属性相加不能超过一个特定值.
2009/09/29 Javascript
jquery中输入验证中一个不错的效果
2010/08/21 Javascript
浅析document.createDocumentFragment()与js效率
2013/07/08 Javascript
js将当前时间格式转换成时间搓(自写)
2013/09/26 Javascript
javascript自定义函数参数传递为字符串格式
2014/07/29 Javascript
Jquery 实现checkbox全选方法
2015/01/28 Javascript
JS动态创建DOM元素的方法
2015/06/09 Javascript
使用PHP+JavaScript将HTML页面转换为图片的实例分享
2016/04/18 Javascript
Angularjs自定义指令Directive详解
2017/05/27 Javascript
移动设备手势事件库Touch.js使用详解
2017/08/18 Javascript
Angular实现可删除并计算总金额的购物车功能示例
2017/12/26 Javascript
详解vue项目中调用百度地图API使用方法
2019/04/25 Javascript
koa2 从入门到精通(小结)
2019/07/23 Javascript
微信小程序 子级页面返回父级并把子级参数带回父级实现方法
2019/08/22 Javascript
JavaScript正则表达式验证登录实例
2020/03/18 Javascript
介绍Python中的__future__模块
2015/04/27 Python
Python进程间通信 multiProcessing Queue队列实现详解
2019/09/23 Python
对tensorflow中的strides参数使用详解
2020/01/04 Python
Python如何实现在字符串里嵌入双引号或者单引号
2020/03/02 Python
植物选择:Botanic Choice
2017/02/15 全球购物
教导处工作制度
2014/01/18 职场文书
刚毕业大学生自荐信范文
2014/02/20 职场文书
我的长生果教学反思
2014/04/28 职场文书
开展批评与自我批评发言材料
2014/05/15 职场文书
城市创卫标语
2014/06/17 职场文书
大专生求职信
2014/06/29 职场文书
云南省召开党的群众路线教育实践活动总结会议新闻稿
2014/10/21 职场文书
先进教师个人事迹材料
2014/12/15 职场文书
面试通知邮件
2015/04/20 职场文书
史上最牛辞职信
2015/05/13 职场文书
小鞋子观后感
2015/06/05 职场文书
国庆节新闻稿
2015/07/17 职场文书
Python通过m3u8文件下载合并ts视频的操作
2021/04/16 Python
MySQL面试题讲解之如何设置Hash索引
2021/11/01 MySQL