老生常谈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中Date()时间日期函数的使用方法小结
Apr 20 PHP
php结合表单实现一些简单功能的例子
Jun 04 PHP
第4章 数据处理-php字符串的处理-郑阿奇(续)
Jul 04 PHP
php数组函数序列之array_pop() - 删除数组中的最后一个元素
Nov 07 PHP
PHP 通过Socket收发十六进制数据的实现代码
Aug 16 PHP
成为好程序员必须避免的5个坏习惯
Jul 04 PHP
字符串长度函数strlen和mb_strlen的区别示例介绍
Sep 09 PHP
使用PHP实现下载CSS文件中的图片
Dec 06 PHP
EarthLiveSharp中cloudinary的CDN图片缓存自动清理python脚本
Apr 04 PHP
php+resumablejs实现的分块上传 断点续传功能示例
Apr 18 PHP
PHP数据库操作三:redis用法分析
Aug 16 PHP
如何在centos8自定义目录安装php7.3
Nov 28 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代码的参数说明
2008/06/07 PHP
php木马webshell扫描器代码
2012/01/25 PHP
你可能不知道PHP get_meta_tags()函数
2014/05/12 PHP
PHP登录验证码的实现与使用方法
2016/07/07 PHP
JavaScript OOP类与继承
2009/11/15 Javascript
使用jQuery实现更改默认alert框体
2015/04/13 Javascript
javascript将DOM节点添加到文档的方法实例分析
2015/08/04 Javascript
jQuery+css实现炫目的动态块漂移效果
2016/01/28 Javascript
如何判断Javascript对象是否存在的简单实例
2016/05/18 Javascript
浅谈JS中的bind方法与函数柯里化
2016/08/10 Javascript
js实现固定宽高滑动轮播图效果
2017/01/13 Javascript
基于HTML5+JS实现本地图片裁剪并上传功能
2017/03/24 Javascript
Angularjs实现上传图片预览功能
2017/09/01 Javascript
EasyUI创建人员树的实例代码
2017/09/15 Javascript
详解自定义ajax支持跨域组件封装
2018/02/08 Javascript
解决vue2.0 element-ui中el-upload的before-upload方法返回false时submit()不生效问题
2018/08/24 Javascript
Node.js 路由的实现方法
2019/06/05 Javascript
nodejs的安装使用与npm的介绍
2019/09/11 NodeJs
vue 使用插槽分发内容操作示例【单个插槽、具名插槽、作用域插槽】
2020/03/06 Javascript
vue-router路由懒加载及实现的3种方式
2021/02/28 Vue.js
Python中AND、OR的一个使用小技巧
2015/02/18 Python
Python机器学习logistic回归代码解析
2018/01/17 Python
对numpy中布尔型数组的处理方法详解
2018/04/17 Python
解决Python安装时报缺少DLL问题【两种解决方法】
2019/07/15 Python
Python.append()与Python.expand()用法详解
2019/12/18 Python
Python使用pymysql模块操作mysql增删改查实例分析
2019/12/19 Python
Python tkinter布局与按钮间距设置方式
2020/03/04 Python
用Python匹配HTML tag的时候,<.*>和<.*?>有什么区别
2012/11/04 面试题
物流司机岗位职责
2013/12/28 职场文书
家长学校实施方案
2014/03/15 职场文书
经典促销广告词大全
2014/03/19 职场文书
护士上岗前培训自我鉴定
2014/04/20 职场文书
保护环境标语
2014/06/09 职场文书
学校元旦晚会开场白
2014/12/14 职场文书
学校艾滋病宣传活动总结
2015/05/09 职场文书
MySQL外键约束(Foreign Key)案例详解
2022/06/28 MySQL