老生常谈php 正则中的i,m,s,x,e分别表示什么


Posted in PHP onMarch 02, 2017

i          
如果设定此修正符,模式中的字符将同时匹配大小写字母。

m       
当设定了此修正符,“行起始”和“行结束”除了匹配整个字符串开头和结束外,还分别匹配其中的换行符的之后和之前。

s        
如果设定了此修正符,模式中的圆点元字符(.)匹配所有的字符,包括换行符。没有此设定的话,则不包括换行符。

x         
如果设定了此修正符,模式中的空白字符除了被转义的或在字符类中的以外完全被忽略,在未转义的字符类之外的 #以及下一个换行符之间的所有字符,包括两头,也都被忽略。

e         
如果设定了此修正符,preg_replace() 在替换字符串中对逆向引用作正常的替换,

?在 . + 和 * 之后 表示非贪婪匹配: *、+和?限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个?就可以实现非贪婪或最小匹配。

例如:

<?php
$string = "上飞机离开我<img border='0' alt='' src='/uploadfile/2009/0921/20090921091612567.jpg' border='0' />sdfsdf";

$su = preg_match("/ \<[ ]*img.*src[ ]*\=[ ]*[\"|\'](.+?)[\"|\'] /", $string,$match); // 匹配src=的内容
print_r($match[1]); // 输出 /uploadfile/2009/0921/20090921091612567.jpg

$su = preg_match("/ \<[ ]*img.*src[ ]*\=[ ]*[\"|\'](.+)[\"|\'] /", $string,$match);
print_r($match[1]); // 输出 /uploadfile/2009/0921/20090921091612567.jpg' border='
?>

例子:(?i):

(?i)在PHP中的意思是内部修正符,i指不区分大小写

其它的修正符还有x,m,s,U等。和我们使用的模式修正符是一样的。

区别在于它是在模式内部使用的。仅作用于(?i)所在的子模式内

ccc(a(?i))bcd 匹配 cccabcd和cccAbcd

而a(?i)bc则和abc加上\i修正符是一样的因为(?i)作用于整个模式

后向引用

对一个正则表达式模式或部分模式两边添加圆括号将导致相关匹配存储到一个临时缓冲区中,所捕获的每个子匹配都按照在正则表达式模式中从左至右所遇到的内容存储。存储子匹配的缓冲区编号从 1 开始,连续编号直至最大 99 个子表达式。每个缓冲区都可以使用 '\n' 访问,其中 n 为一个标识特定缓冲区的一位或两位十进制数。

可以使用非捕获元字符 '?:', '?=', or '?!' 来忽略对相关匹配的保存。

以上这篇老生常谈php 正则中的i,m,s,x,e分别表示什么就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP的宝库目录--PEAR
Oct 09 PHP
用PHP读取IMAP邮件
Oct 09 PHP
php GeoIP的使用教程
Mar 09 PHP
浅析php中json_encode()和json_decode()
May 25 PHP
2个Codeigniter文件批量上传控制器写法例子
Jul 25 PHP
php实现在限定区域里自动调整字体大小的类实例
Apr 02 PHP
PHP curl伪造IP地址和header信息代码实例
Apr 27 PHP
PHP实现简单搜歌的方法
Jul 28 PHP
php如何获取文件的扩展名
Oct 28 PHP
yii2 modal弹窗之ActiveForm ajax表单异步验证
Jun 13 PHP
PHP实现的多进程控制demo示例
Jul 22 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
Mar 24 PHP
数组任意位置插入元素,删除特定元素的实例
Mar 02 #PHP
根据key删除数组中指定的元素实现方法
Mar 02 #PHP
如何用PHP做到页面注册审核
Mar 02 #PHP
PHP中函数gzuncompress无法使用的解决方法
Mar 02 #PHP
Centos 6.5下PHP 5.3安装ffmpeg扩展的步骤详解
Mar 02 #PHP
php实现遍历文件夹的方法汇总
Mar 02 #PHP
几行代码轻松实现PHP文件打包下载zip
Mar 01 #PHP
You might like
Zend studio for eclipse中使php可以调用mysql相关函数的设置方法
2008/10/13 PHP
Win2003+apache+PHP+SqlServer2008 配置生产环境
2014/07/29 PHP
PHP Curl模拟登录微信公众平台、新浪微博实例代码
2016/01/28 PHP
php生成Android客户端扫描可登录的二维码
2016/05/13 PHP
Windows2003下php5.4安装配置教程(Apache2.4)
2016/06/30 PHP
PHP抽象类基本用法示例
2018/12/28 PHP
javascript CSS画图之基础篇
2009/07/29 Javascript
jQuery 打造动态下滑菜单实现说明
2010/04/15 Javascript
jquery防止重复执行动画避免页面混乱
2014/04/22 Javascript
jQuery中append()方法用法实例
2015/01/08 Javascript
D3.js实现饼状图的方法详解
2016/09/21 Javascript
原生JS实现网络彩票投注效果
2016/09/25 Javascript
jQuery Ajax 实现在html页面实时显示用户登录状态
2016/12/30 Javascript
Vue开发过程中遇到的疑惑知识点总结
2017/01/20 Javascript
js的三种继承方式详解
2017/01/21 Javascript
js实现时钟定时器
2020/03/26 Javascript
python网页请求urllib2模块简单封装代码
2014/02/07 Python
跟老齐学Python之永远强大的函数
2014/09/14 Python
Python实现将n个点均匀地分布在球面上的方法
2015/03/12 Python
pandas使用apply多列生成一列数据的实例
2018/11/28 Python
解决Python3 控制台输出InsecureRequestWarning问题
2019/07/15 Python
浅谈keras的深度模型训练过程及结果记录方式
2020/01/24 Python
python连接mongodb数据库操作数据示例
2020/11/30 Python
世界上获奖最多的手机镜头:Olloclip
2018/03/03 全球购物
Yummie官方网站:塑身衣和衣柜必需品
2019/10/29 全球购物
会计专业推荐信
2013/10/29 职场文书
2014元旦晚会策划方案
2014/02/19 职场文书
高中教师考核方案
2014/05/18 职场文书
2014年组织部工作总结
2014/11/14 职场文书
大学生学年个人总结
2015/02/15 职场文书
党支部考察鉴定意见
2015/06/02 职场文书
2016年母亲节广告语
2016/01/28 职场文书
Python爬取科目四考试题库的方法实现
2021/03/30 Python
Go语言-为什么返回值为接口类型,却返回结构体
2021/04/24 Golang
opencv-python图像配准(匹配和叠加)的实现
2021/06/23 Python
Win11怎么把合并的任务栏分开 Win11任务栏合并分开教程
2022/04/06 数码科技