老生常谈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 相关文章推荐
一个ubbcode的函数,速度很快.
Oct 09 PHP
基于python发送邮件的乱码问题的解决办法
Apr 25 PHP
php简单操作mysql数据库的类
Apr 16 PHP
PHP生成和获取XML格式数据的方法
Mar 04 PHP
Symfony2框架学习笔记之表单用法详解
Mar 18 PHP
php实现文件与16进制相互转换的方法示例
Feb 16 PHP
PHP框架laravel的.env文件配置教程
Jun 07 PHP
利用PHP实现开心消消乐的算法示例
Oct 12 PHP
PHP 代码简洁之道(小结)
Oct 16 PHP
PHP实现提取多维数组指定一列的方法总结
Dec 04 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
Feb 16 PHP
PHP 技巧 * SVG 保存为图片(分享图生成)
Apr 02 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文件的实现方法
2007/03/19 PHP
解决phpmyadmin中缺少mysqli扩展问题的方法
2013/05/06 PHP
总结PHP中数值计算的注意事项
2016/08/14 PHP
PHP创建XML的方法示例【基于DOMDocument类及SimpleXMLElement类】
2019/09/10 PHP
JQuery循环滚动图片代码
2011/12/08 Javascript
用js通过url传参把数据从一个页面传到另一个页面
2014/09/01 Javascript
node.js中的fs.rmdir方法使用说明
2014/12/16 Javascript
jQuery之DOM对象和jQuery对象的转换与区别分析
2015/01/08 Javascript
Vuejs第六篇之Vuejs与form元素实例解析
2016/09/05 Javascript
原生javascript实现文件异步上传的实例讲解
2017/10/26 Javascript
jquery实现的简单轮播图功能【适合新手】
2018/08/17 jQuery
详解在vue-cli项目下简单使用mockjs模拟数据
2018/10/19 Javascript
Vue2 添加数据可视化支持的方法步骤
2019/01/02 Javascript
实用Javascript调试技巧分享(小结)
2019/06/18 Javascript
基于JavaScript实现贪吃蛇游戏
2020/03/16 Javascript
Python os模块中的isfile()和isdir()函数均返回false问题解决方法
2015/02/04 Python
Python深入06——python的内存管理详解
2016/12/07 Python
详解Python下ftp上传文件linux服务器
2018/06/21 Python
Python3和pyqt5实现控件数据动态显示方式
2019/12/13 Python
Python pip安装第三方库实现过程解析
2020/07/09 Python
python 安装移动复制第三方库操作
2020/07/13 Python
如何向scrapy中的spider传递参数的几种方法
2020/11/18 Python
移动端HTML5 input常见问题(小结)
2020/09/28 HTML / CSS
Urban Outfitters德国官网:美国跨国生活方式零售公司
2018/05/21 全球购物
Hunkemöller西班牙:欧洲最大的内衣连锁店
2018/08/15 全球购物
俄罗斯购买剧院和演唱会门票网站:Parter.ru
2019/11/09 全球购物
为您搜罗全球潮流時尚品牌:HBX
2019/12/04 全球购物
一套PHP的笔试题
2013/05/31 面试题
应用化学专业职业生涯规划书
2014/01/22 职场文书
2014年清明节网上祭英烈寄语
2014/04/09 职场文书
合同协议书格式
2014/04/18 职场文书
幼儿园运动会口号
2014/06/07 职场文书
入伍通知书
2015/04/23 职场文书
有趣的二维码:使用MyQR和qrcode来制作二维码
2021/05/10 Python
关于@OnetoMany关系映射的排序问题,使用注解@OrderBy
2021/12/06 Java/Android
SQL Server使用PIVOT与unPIVOT实现行列转换
2022/05/25 SQL Server