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 相关文章推荐
解析posix与perl标准的正则表达式区别
Jun 17 PHP
php过滤表单提交的html等危险代码
Nov 03 PHP
codeigniter中view通过循环显示数组数据的方法
Mar 20 PHP
PHP处理postfix邮件内容的方法
Jun 16 PHP
PHP消息队列用法实例分析
Feb 12 PHP
PHP反射机制原理与用法详解
Feb 15 PHP
ThinkPHP实现静态缓存和动态缓存示例代码
May 02 PHP
YII框架中使用memcache的方法详解
Aug 02 PHP
php实现支持中文的文件下载功能示例
Aug 30 PHP
thinkphp5 URL和路由的功能详解与实例
Dec 26 PHP
tp5实现微信小程序多图片上传到服务器功能
Jul 16 PHP
PHP获取ttf格式文件字体名的方法示例
Mar 06 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
php调用Google translate_tts api实现代码
2013/08/07 PHP
PHP获取当前所在目录位置的方法
2014/11/26 PHP
php+xml编程之SimpleXML的应用实例
2015/01/24 PHP
JQuery 实现的页面滚动时浮动窗口控件
2009/07/10 Javascript
javascript 在firebug调试时用console.log的方法
2012/05/10 Javascript
原生javascript实现Tab选项卡切换功能
2015/01/12 Javascript
JS基于Mootools实现的个性菜单效果代码
2015/10/21 Javascript
jQuery进行组件开发完整实例
2015/12/15 Javascript
js中的eval()函数把含有转义字符的字符串转换成Object对象的方法
2016/12/02 Javascript
Angular 4 依赖注入学习教程之FactoryProvider的使用(四)
2017/06/04 Javascript
vue项目中使用axios上传图片等文件操作
2017/11/02 Javascript
基于vue-resource jsonp跨域问题的解决方法
2018/02/03 Javascript
php结合js实现多条件组合查询
2019/05/28 Javascript
Vue事件修饰符native、self示例详解
2019/07/09 Javascript
vue路由教程之静态路由
2019/09/03 Javascript
vue.js购物车添加商品组件的方法
2019/09/17 Javascript
基于Web Audio API实现音频可视化效果
2020/06/12 Javascript
js实现电灯开关效果
2021/01/19 Javascript
python 如何快速找出两个电子表中数据的差异
2017/05/26 Python
Python 和 JS 有哪些相同之处
2017/11/23 Python
Python浅复制中对象生存周期实例分析
2018/04/02 Python
Pandas中把dataframe转成array的方法
2018/04/13 Python
对python 操作solr索引数据的实例详解
2018/12/07 Python
Python 离线工作环境搭建的方法步骤
2019/07/29 Python
Python Pandas数据中对时间的操作
2019/07/30 Python
matplotlib绘制鼠标的十字光标的实现(内置方式)
2021/01/06 Python
CSS3中HSL和HSLA的简单使用示例
2015/07/14 HTML / CSS
魔声耳机官方网站:Monster是世界第一品牌的高性能耳机
2016/10/26 全球购物
美国著名的户外用品品牌:L.L.Bean
2018/01/05 全球购物
英国儿童设计师服装的领先零售商:Base
2019/03/17 全球购物
植村秀加拿大官网:Shu Uemura加拿大
2019/09/03 全球购物
物业管理毕业生的自我评价
2014/02/17 职场文书
竞选学习委员演讲稿
2014/09/01 职场文书
2015年汽车销售经理工作总结
2015/04/27 职场文书
2015教师个人师德工作总结
2015/10/23 职场文书
详解CocosCreator项目结构机制
2021/04/14 Javascript