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中使用Oracle数据库(3)
Oct 09 PHP
Notice: Undefined index: page in E:\PHP\test.php on line 14
Nov 02 PHP
php中使用DOM类读取XML文件的实现代码
Dec 14 PHP
PHP无法访问远程mysql的问题分析及解决
May 16 PHP
PHP判断指定时间段的2个方法
Mar 14 PHP
两种设置php载入页面时编码的方法
Jul 29 PHP
Apache启动报错No space left on device: AH00023该怎么解决
Oct 16 PHP
简要剖析PHP的Yii框架的组件化机制的基本知识
Mar 17 PHP
php封装的smartyBC类完整实例
Oct 19 PHP
PHP在linux上执行外部命令的方法
Feb 06 PHP
PHP简单验证码功能机制实例详解
Mar 27 PHP
微信JSSDK分享功能图文实例详解
Apr 08 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针对常规模板引擎中与CSS/JSON冲突的解决方法
2014/08/19 PHP
PHP pear安装配置教程
2016/05/14 PHP
visual studio code 调试php方法(图文详解)
2017/09/15 PHP
php+iframe 实现上传文件功能示例
2020/03/04 PHP
javascript dom追加内容实现示例
2013/09/21 Javascript
只需一行代码,轻松实现一个在线编辑器
2013/11/12 Javascript
快速学习jQuery插件 Cookie插件使用方法
2015/12/01 Javascript
老生常谈遮罩层 滚动条的问题
2016/04/29 Javascript
jQuery鼠标事件总结
2016/10/13 Javascript
json数据处理及数据绑定
2017/01/25 Javascript
jQuery中animate()的使用方法及解决$(”body“).animate({“scrollTop”:top})不被Firefox支持的问题
2017/04/04 jQuery
javascript 判断一个对象为数组的方法
2017/05/03 Javascript
Kindeditor单独调用单图上传增加预览功能的实例
2017/07/31 Javascript
ES6中新增的Object.assign()方法详解
2017/09/22 Javascript
微信小程序实现选项卡功能
2020/06/19 Javascript
jQuery.extend 与 jQuery.fn.extend的用法及区别实例分析
2018/07/25 jQuery
ES6 Promise对象概念及用法实例详解
2019/10/15 Javascript
vue3.0中友好使用antdv示例详解
2021/01/05 Vue.js
[01:44]剑指西雅图 展望TI之CIS战队专访
2014/06/25 DOTA
python使用socket向客户端发送数据的方法
2015/04/29 Python
Python函数的周期性执行实现方法
2016/08/13 Python
浅谈python字典多键值及重复键值的使用
2016/11/04 Python
详解Python函数可变参数定义及其参数传递方式
2017/08/02 Python
基于python socketserver框架全面解析
2017/09/21 Python
使用Python操作FTP实现上传和下载的方法
2019/04/01 Python
对tensorflow中tf.nn.conv1d和layers.conv1d的区别详解
2020/02/11 Python
python搜索算法原理及实例讲解
2020/11/18 Python
python实现猜拳游戏项目
2020/11/30 Python
python 获取谷歌浏览器保存的密码
2021/01/06 Python
html5 figure和figcaption的使用方法
2018/09/10 HTML / CSS
在线学习西班牙语、法语或其他语言:Babbel.com
2018/02/07 全球购物
马歇尔耳机官网:Marshall Headphones
2020/02/04 全球购物
副主任竞聘演讲稿
2014/08/18 职场文书
初中家长评语和期望
2014/12/26 职场文书
无房证明样本
2015/06/17 职场文书
劳动模范获奖感言
2015/07/31 职场文书