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 相关文章推荐
php4的session功能评述(一)
Oct 09 PHP
php仿discuz分页效果代码
Oct 02 PHP
linux php mysql数据库备份实现代码
Mar 10 PHP
php下图片文字混合水印与缩略图实现代码
Dec 11 PHP
第三章 php操作符与控制结构代码
Dec 30 PHP
php计算十二星座的函数代码
Aug 21 PHP
探讨方法的重写(覆载)详解
Jun 08 PHP
php环境下利用session防止页面重复刷新的具体实现
Jan 09 PHP
php下foreach提示Warning:Invalid argument supplied for foreach()的解决方法
Nov 11 PHP
PHP模块memcached使用指南
Dec 08 PHP
PHP处理postfix邮件内容的方法
Jun 16 PHP
php装饰者模式简单应用案例分析
Oct 23 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 和 MySQL 基础教程(一)
2006/10/09 PHP
PHP新手上路(十一)
2006/10/09 PHP
php for 循环语句使用方法详细说明
2010/05/09 PHP
新手学习PHP的一些基础知识分享
2011/07/27 PHP
PHP5.5在windows安装使用memcached服务端的方法
2014/04/16 PHP
PHP使用Memcache时模拟命名空间及缓存失效问题的解决
2016/02/27 PHP
Nigma vs Alliance BO5 第一场2.14
2021/03/10 DOTA
javascript prototype 原型链
2009/03/12 Javascript
JS 实现获取打开一个界面中输入的值
2013/03/19 Javascript
jquery 添加节点的几种方法介绍
2013/09/04 Javascript
在javascript中如何得到中英文混合字符串的长度
2014/01/17 Javascript
js实现Select列表各项上移和下移的方法
2015/08/14 Javascript
javascript类型系统 Window对象学习笔记
2016/01/07 Javascript
javascript html实现网页版日历代码
2016/03/08 Javascript
vue组件中watch props根据v-if动态判断并挂载DOM的问题
2019/05/12 Javascript
vue elementUI 表单校验功能之数组多层嵌套
2019/06/04 Javascript
python实现每次处理一个字符的三种方法
2014/10/09 Python
Python的迭代器和生成器
2015/07/29 Python
python自带的http模块详解
2016/11/06 Python
Python continue继续循环用法总结
2018/06/10 Python
python 日志 logging模块详细解析
2020/03/31 Python
TensorFlow tf.nn.softmax_cross_entropy_with_logits的用法
2020/04/19 Python
python的pip有什么用
2020/06/17 Python
基于python实现可视化生成二维码工具
2020/07/08 Python
Python识别验证码的实现示例
2020/09/30 Python
最新Python idle下载、安装与使用教程图文详解
2020/11/28 Python
Python实现邮件发送的详细设置方法(遇到问题)
2021/01/18 Python
个人实用简单的自我评价
2013/10/19 职场文书
高校辅导员推荐信范文
2013/12/25 职场文书
成功经营餐厅的创业计划书范文
2013/12/26 职场文书
教育英语专业毕业生的求职信
2014/03/13 职场文书
中国梦团日活动总结
2014/07/07 职场文书
2014年语文教研组工作总结
2014/12/06 职场文书
演讲开头怎么书写?
2019/08/06 职场文书
斗罗大陆八大特殊魂兽,龙族始祖排榜首,第五最残忍(翠魔鸟)
2022/03/18 国漫
python热力图实现的完整实例
2022/06/25 Python