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 相关文章推荐
多重?l件?合查?(二)
Oct 09 PHP
给初学PHP的5个入手程序
Nov 23 PHP
使用php来实现网络服务
Sep 15 PHP
php笔记之常用文件操作
Oct 12 PHP
php 操作调试的方法
Jul 12 PHP
探讨php中遍历二维数组的几种方法详解
Jun 08 PHP
PHP冒泡算法详解(递归实现)
Nov 10 PHP
php文件缓存类用法实例分析
Apr 22 PHP
php实现搜索一维数组元素并删除二维数组对应元素的方法
Jul 06 PHP
yii2实现根据时间搜索的方法
May 25 PHP
php微信开发之带参数二维码的使用
Aug 03 PHP
php使用str_shuffle()函数生成随机字符串的方法分析
Feb 17 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编程网上资源导航
2006/10/09 PHP
新闻分类录入、显示系统
2006/10/09 PHP
简体中文转换为繁体中文的PHP函数
2006/10/09 PHP
PHP中删除变量时unset()和null的区别分析
2011/01/27 PHP
php中使用cookie来保存用户登录信息的实现代码
2012/03/08 PHP
php 检查电子邮件函数(自写)
2014/01/16 PHP
PHP ignore_user_abort函数详细介绍和使用实例
2014/07/15 PHP
ThinkPHP的MVC开发机制实例解析
2014/08/23 PHP
php判断文件上传图片格式的实例详解
2017/09/30 PHP
JavaScript对象之间的转换 jQuery对象和原声DOM
2011/03/07 Javascript
js获取视频时长代码
2014/04/10 Javascript
JavaScript实现将xml转换成html table表格的方法
2015/04/17 Javascript
JavaScript数组合并的多种方法
2016/05/22 Javascript
JS获取屏幕高度的简单实现代码
2016/05/24 Javascript
轻松掌握JavaScript中的Math object数学对象
2016/05/26 Javascript
AngularJS ng-change 指令的详解及简单实例
2016/07/30 Javascript
jq stop()和:is(:animated)的用法及区别(详解)
2017/02/12 Javascript
[01:45]典藏宝瓶2+祈求者身心——这就是DOTA2TI9总奖金突破3000万美元的秘密
2019/07/21 DOTA
Python greenlet实现原理和使用示例
2014/09/24 Python
python的re模块应用实例
2014/09/26 Python
python通过BF算法实现关键词匹配的方法
2015/03/13 Python
Python的mysql数据库的更新如何实现
2017/07/31 Python
Python完成哈夫曼树编码过程及原理详解
2019/07/29 Python
Python closure闭包解释及其注意点详解
2019/08/28 Python
matplotlib grid()设置网格线外观的实现
2021/02/22 Python
详解CSS3中Media Queries的相关使用
2015/07/17 HTML / CSS
H&M美国官网:欧洲最大的服饰零售商
2016/09/07 全球购物
Mixbook加拿大:照片书,照片卡,剪贴簿,年历和日历
2017/02/21 全球购物
小米乌克兰网上商店:Xiaomi.UA
2019/10/29 全球购物
俄罗斯茶和咖啡网上商店:Tea.ru
2021/01/26 全球购物
Ego Shoes官网:英国时髦鞋类品牌
2020/10/19 全球购物
美国狗旅行和户外用品领先供应商:kurgo
2020/08/18 全球购物
中学生励志演讲稿
2014/04/26 职场文书
新闻工作者先进事迹
2014/05/26 职场文书
企业三严三实学习心得体会
2014/10/13 职场文书
公司给客户的感谢信
2015/01/23 职场文书