老生常谈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 相关文章推荐
打造计数器DIY三步曲(下)
Oct 09 PHP
简单示例AJAX结合PHP代码实现登录效果代码
Jul 25 PHP
php flv视频时间获取函数
Jun 29 PHP
php正则过滤html标签、空格、换行符的代码(附说明)
Oct 25 PHP
那些年一起学习的PHP(一)
Mar 21 PHP
解析PHP中ob_start()函数的用法
Jun 24 PHP
ThinkPHP3.1新特性之命名范围的使用
Jun 19 PHP
PHP中使用curl伪造IP的简单方法
Aug 07 PHP
WordPress迁移时一些常见问题的解决方法整理
Nov 24 PHP
关于ThinkPHP中的异常处理详解
May 11 PHP
PHP基于GD2函数库实现验证码功能示例
Jan 27 PHP
PHP isset()及empty()用法区别详解
Aug 29 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
PHP中static关键字原理的学习研究分析
2011/07/18 PHP
基于curl数据采集之正则处理函数get_matches的使用
2013/04/28 PHP
jquery+php+ajax显示上传进度的多图片上传并生成缩略图代码
2014/10/15 PHP
php版微信公众平台回复中文出现乱码问题的解决方法
2016/09/22 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
2017/11/17 PHP
SharePoint 客户端对象模型 (一) ECMA Script
2011/05/22 Javascript
JavaScript 函数惰性载入的实现及其优点介绍
2013/08/12 Javascript
jquery教程ajax请求json数据示例
2014/01/13 Javascript
基于jquery实现发送文章到手机的代码
2014/12/26 Javascript
jQuery修改class属性和CSS样式整理
2015/01/30 Javascript
简介alert()与console.log()的不同
2015/08/26 Javascript
javascript常用函数(1)
2015/11/04 Javascript
jQuery处理XML文件的几种方法
2016/06/14 Javascript
jQuery判断是否存在滚动条的简单方法
2016/09/17 Javascript
利用vue+elementUI实现部分引入组件的方法详解
2017/11/22 Javascript
vue富文本编辑器组件vue-quill-edit使用教程
2018/09/21 Javascript
JS实现根据数组对象的某一属性排序操作示例
2019/01/14 Javascript
JS+canvas画布实现炫酷的旋转星空效果示例
2019/02/13 Javascript
vue vantUI实现文件(图片、文档、视频、音频)上传(多文件)
2019/10/15 Javascript
Vue实现背景更换颜色操作
2020/07/17 Javascript
vue 实现锚点功能操作
2020/08/10 Javascript
Python3 能振兴 Python的原因分析
2014/11/28 Python
Python二维码生成库qrcode安装和使用示例
2014/12/16 Python
Python中字典映射类型的学习教程
2015/08/20 Python
Python通过matplotlib画双层饼图及环形图简单示例
2017/12/15 Python
python实现数据库跨服务器迁移
2018/04/12 Python
Python获取命令实时输出-原样彩色输出并返回输出结果的示例
2019/07/11 Python
python如何代码集体右移
2020/07/20 Python
什么是触发器(trigger)? 触发器有什么作用?
2013/09/18 面试题
通信工程毕业生自荐信
2013/11/01 职场文书
业务员岗位职责
2013/11/16 职场文书
初二学习计划书范文
2014/04/27 职场文书
银行求职自荐书
2014/06/25 职场文书
公安局负责人查摆问题及整改方案
2014/09/27 职场文书
2014年财务人员工作总结
2014/11/11 职场文书
证券区域经理岗位职责
2015/04/10 职场文书