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
让Nginx支持ThinkPHP的URL重写和PATHINFO的方法分享
Aug 08 PHP
php数组(array)输出的三种形式详解
Jun 05 PHP
PHP中Restful api 错误提示返回值实现思路
Apr 12 PHP
Yii2简单实现给表单添加验证码的方法
Jul 18 PHP
PHP简单实现数字分页功能示例
Aug 24 PHP
php中引用符号(&amp;)的使用详细介绍
Dec 06 PHP
php 猴子摘桃的算法
Jun 20 PHP
PHP自动载入类文件函数__autoload的使用方法
Mar 25 PHP
Laravel自定义 封装便捷返回Json数据格式的引用方法
Sep 29 PHP
Laravel实现搜索的时候分页并携带参数
Oct 15 PHP
laravel框架中控制器的创建和使用方法分析
Nov 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
phpmyadmin导入(import)文件限制的解决办法
2009/12/11 PHP
PHP zlib扩展实现页面GZIP压缩输出
2010/06/17 PHP
smarty简单应用实例
2015/11/03 PHP
PHP中的Trait 特性及作用
2016/04/03 PHP
点击下载链接 弹出页面实现代码
2009/10/01 Javascript
超简单的jquery的AJAX用法
2010/05/10 Javascript
javascript preload&amp;lazy load
2010/05/13 Javascript
jquery的ajax简单结构示例代码
2014/02/17 Javascript
JS实现仿中关村论坛评分后弹出提示效果的方法
2015/02/23 Javascript
JavaScript实现表格快速变色效果代码
2015/08/19 Javascript
JS实现带有3D立体感的银灰色竖排折叠菜单代码
2015/10/20 Javascript
简单讲解AngularJS的Routing路由的定义与使用
2016/03/05 Javascript
bootstrap daterangepicker双日历时间段选择控件详解
2017/06/15 Javascript
Vue Element使用icon图标教程详解(第三方)
2018/02/07 Javascript
微信小程序搜索框样式并实现跳转到搜索页面(小程序搜索功能)
2020/03/10 Javascript
javascript实现简单留言板案例
2021/02/09 Javascript
详细介绍Python中的偏函数
2015/04/27 Python
Python3读取文件常用方法实例分析
2015/05/22 Python
Django1.7+python 2.78+pycharm配置mysql数据库
2016/10/09 Python
python如何对实例属性进行类型检查
2018/03/20 Python
python调用摄像头拍摄数据集
2019/06/01 Python
Python爬取12306车次信息代码详解
2020/08/12 Python
HTML5-WebSocket实现聊天室示例
2016/12/15 HTML / CSS
Html5 滚动穿透的方法
2019/05/13 HTML / CSS
新西兰领先的鞋类和靴子网上商城:Merchant 1948
2017/09/08 全球购物
会计与出纳自荐书范文
2014/03/16 职场文书
法定代表人授权委托书
2014/04/04 职场文书
好听的队名和口号
2014/06/09 职场文书
法制宣传口号
2014/06/16 职场文书
2014年档案管理工作总结
2014/11/17 职场文书
2014年机关后勤工作总结
2014/12/16 职场文书
环境建议书
2015/02/04 职场文书
英语教师个人总结
2015/02/09 职场文书
傅雷家书读书笔记
2015/06/29 职场文书
mysql外连接与内连接查询的不同之处
2021/06/03 MySQL
Springboot使用Spring Data JPA实现数据库操作
2021/06/30 Java/Android