老生常谈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支持页面回退的两种方法[转]
Feb 14 PHP
《PHP编程最快明白》第三讲:php数组
Nov 01 PHP
PHP文件上传原理简单分析
May 29 PHP
php加密算法之实现可逆加密算法和解密分享
Jan 21 PHP
PHP APC缓存配置、使用详解
Mar 06 PHP
php实现天干地支计算器示例
Mar 14 PHP
php可应用于面包屑导航的递归寻找家谱树实现方法
Feb 02 PHP
php实现在多维数组中查找特定value的方法
Jul 29 PHP
php生成mysql的数据字典
Jul 07 PHP
PHP的openssl加密扩展使用小结(推荐)
Jul 18 PHP
php利用嵌套数组拼接与解析json的方法
Feb 07 PHP
Swoole源码中如何查询Websocket的连接问题详解
Aug 30 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+Mysql基于事务处理实现转账功能的方法
2015/07/08 PHP
基于yaf框架和uploadify插件,做的一个导入excel文件,查看并保存数据的功能
2017/01/24 PHP
PHP培训要多少钱
2017/06/06 PHP
收藏一些不常用,但是有用的代码
2007/03/12 Javascript
js一般方法改写成面向对象方法的无限级折叠菜单示例代码
2013/07/04 Javascript
AngularJS自动表单验证
2016/02/01 Javascript
JavaScript实现数据类型的相互转换
2016/03/06 Javascript
浅谈javascript:两种注释,声明变量,定义函数
2016/09/29 Javascript
深入理解javascript的getTime()方法
2017/02/16 Javascript
canvas雪花效果核心代码分享
2017/02/19 Javascript
Angular4项目中添加i18n国际化插件ngx-translate的步骤详解
2017/07/02 Javascript
基于Vue的延迟加载插件vue-view-lazy
2018/05/21 Javascript
vue 右键菜单插件 简单、可扩展、样式自定义的右键菜单
2018/11/29 Javascript
微信小程序提取公用函数到util.js及使用方法示例
2019/01/10 Javascript
超详细动手搭建一个VuePress 站点及开启PWA与自动部署的方法
2019/01/27 Javascript
详解vue项目中使用token的身份验证的简单实践
2019/03/08 Javascript
Python 基于Twisted框架的文件夹网络传输源码
2016/08/28 Python
matplotlib绘图实例演示标记路径
2018/01/23 Python
python实现隐马尔科夫模型HMM
2018/03/25 Python
django 自定义过滤器的实现
2019/02/26 Python
python快排算法详解
2019/03/04 Python
python里dict变成list实例方法
2019/06/26 Python
python导包的几种方法(自定义包的生成以及导入详解)
2019/07/15 Python
wxPython色环电阻计算器
2019/11/18 Python
使用Python进行防病毒免杀解析
2019/12/13 Python
python 画条形图(柱状图)实例
2020/04/24 Python
css3的transition效果和transfor效果示例介绍
2013/10/30 HTML / CSS
HTML5中的进度条progress元素简介及兼容性处理
2016/06/02 HTML / CSS
canvas拼图功能实现代码示例
2018/11/21 HTML / CSS
大学生自我鉴定范文模板
2014/01/21 职场文书
药品采购员岗位职责
2014/02/08 职场文书
鸿星尔克广告词
2014/03/21 职场文书
财务工作犯错检讨书
2014/10/07 职场文书
电信营业员岗位职责
2015/04/14 职场文书
利用python Pandas实现批量拆分Excel与合并Excel
2021/05/23 Python
Win10服务主机占用内存怎么办?Win10服务主机进程占用大量内存解决方法
2022/09/23 数码科技