老生常谈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 图像处理类1
Jun 15 PHP
关于crontab的使用详解
Jun 24 PHP
解析php扩展php_curl.dll不加载的解决方法
Jun 26 PHP
php 表单提交大量数据发生丢失的解决方法
Mar 03 PHP
php jsonp单引号转义
Nov 23 PHP
php生成图片缩略图的方法
Apr 07 PHP
php正则preg_replace_callback函数用法实例
Jun 01 PHP
PHP中error_reporting()用法详解
Aug 31 PHP
php微信公众平台配置接口开发程序
Sep 22 PHP
php批量修改表结构实例
May 24 PHP
详解php中serialize()和unserialize()函数
Jul 08 PHP
PHP环形链表实现方法示例
Sep 15 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
thinkphp项目如何自定义微信分享描述内容
2017/02/20 PHP
ThinkPHP实现图片上传操作的方法详解
2017/05/08 PHP
PHP中$GLOBALS['HTTP_RAW_POST_DATA']和$_POST的区别分析
2017/07/03 PHP
php使用 readfile() 函数设置文件大小大小的方法
2017/08/11 PHP
js trim函数 去空格函数与正则集锦
2009/11/20 Javascript
jQuery 获取URL的GET参数值的小例子
2013/04/18 Javascript
Bootstrap进度条组件知识详解
2016/05/01 Javascript
Javascript的无new构建实例详解
2016/05/15 Javascript
JS实现图片延迟加载并淡入淡出效果的简单方法
2016/08/25 Javascript
JS简单实现获取元素的封装操作示例
2017/04/07 Javascript
详解vue-router和vue-cli以及组件之间的传值
2017/07/04 Javascript
Node.js搭建WEB服务器的示例代码
2018/08/15 Javascript
JavaScript实现多态和继承的封装操作示例
2018/08/20 Javascript
原生JS实现的自动轮播图功能详解
2018/12/28 Javascript
node.js实现上传文件功能
2019/07/15 Javascript
vue axios请求成功却进入catch的原因分析
2020/09/08 Javascript
python之wxPython菜单使用详解
2014/09/28 Python
Python学习之asyncore模块用法实例教程
2014/09/29 Python
Python基于DES算法加密解密实例
2015/06/03 Python
使用python存储网页上的图片实例
2018/05/22 Python
python中使用psutil查看内存占用的情况
2018/06/11 Python
virtualenv 指定 python 解释器的版本方法
2018/10/25 Python
Python模拟百度自动输入搜索功能的实例
2019/02/14 Python
Python设置matplotlib.plot的坐标轴刻度间隔以及刻度范围
2019/06/25 Python
Python中查看变量的类型内存地址所占字节的大小
2019/06/26 Python
用python求一个数组的和与平均值的实现方法
2019/06/29 Python
Python调用钉钉自定义机器人的实现
2020/01/03 Python
利用Python脚本实现自动刷网课
2020/02/03 Python
Python中的sys.stdout.write实现打印刷新功能
2020/02/21 Python
Prototype是怎么扩展DOM的
2014/10/01 面试题
平面设计师工作职责范文
2013/12/03 职场文书
员工保密承诺书
2014/05/28 职场文书
先进单位申报材料
2014/12/25 职场文书
小兵张嘎观后感
2015/06/03 职场文书
Html5调用企业微信的实现
2021/04/16 HTML / CSS
Golang全局变量加锁的问题解决
2021/05/08 Golang