老生常谈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+MYSQL开发工具及资源收藏
Jan 02 PHP
dedecms系统常用术语汇总
Apr 03 PHP
PHP随机数生成代码与使用实例分析
Apr 08 PHP
php使用curl检测网页是否被百度收录的示例分享
Jan 31 PHP
PHP中加密解密函数与DES加密解密实例
Oct 17 PHP
php检索或者复制远程文件的方法
Mar 13 PHP
php实现从上传文件创建缩略图的方法
Apr 02 PHP
PHP7.1方括号数组符号多值复制及指定键值赋值用法分析
Sep 26 PHP
Laravel框架实现定时发布任务的方法
Aug 16 PHP
php无限极分类实现方法分析
Jul 04 PHP
Laravel5.5 手动分页和自定义分页样式的简单实现
Oct 15 PHP
laravel5 Eloquent 实现事务方式
Oct 21 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
十大“创意”战术!
2020/03/04 星际争霸
phpmyadmin里面导入sql语句格式的大量数据的方法
2010/06/05 PHP
PHP简洁函数小结
2011/08/12 PHP
php实现读取和写入tab分割的文件
2015/06/01 PHP
PHP内核探索:哈希表碰撞攻击原理
2015/07/31 PHP
php入门教程之Zend Studio设置与开发实例
2016/09/09 PHP
PHP进程通信基础之信号
2017/02/19 PHP
php模拟实现斗地主发牌
2020/04/22 PHP
json数据的列循环示例
2013/09/06 Javascript
jQuery的one()方法用法实例
2015/01/19 Javascript
JavaScript使用addEventListener添加事件监听用法实例
2015/06/01 Javascript
五种js判断是否为整数类型方式
2015/12/03 Javascript
javascript获取wx.config内部字段解决微信分享
2016/03/09 Javascript
JS中使用变量保存arguments对象的方法
2016/06/03 Javascript
JS常用函数和常用技巧小结
2016/10/15 Javascript
js获取json中key所对应的value值的简单方法
2020/06/17 Javascript
JS 组件系列之 bootstrap treegrid 组件封装过程
2017/04/28 Javascript
使用Vue实现移动端左滑删除效果附源码
2019/05/16 Javascript
vue Tab切换以及缓存页面处理的几种方式
2019/11/05 Javascript
Vue双向绑定实现原理与方法详解
2020/05/07 Javascript
[02:15]2014DOTA2国际邀请赛 赛后退役选手回顾
2014/08/01 DOTA
Python实现删除列表中满足一定条件的元素示例
2017/06/12 Python
python 调用c语言函数的方法
2017/09/29 Python
python安装模块如何通过setup.py安装(超简单)
2018/05/05 Python
python smtplib模块实现发送邮件带附件sendmail
2018/05/22 Python
Django forms组件的使用教程
2018/10/08 Python
用html5的canvas和JavaScript创建一个绘图程序的简单实例
2016/07/06 HTML / CSS
垃圾回收的优点和原理。并考虑2种回收机制
2016/10/16 面试题
Linux管理员面试题 Linux admin interview questions
2014/11/01 面试题
介绍一下SOA和SOA的基本特征
2016/02/24 面试题
男方父母证婚词
2014/01/12 职场文书
夏季奶茶店创业计划书
2014/01/16 职场文书
高中生期末评语大全
2014/01/28 职场文书
工程力学专业自荐信范文
2014/03/17 职场文书
2014年财务人员工作总结
2014/11/11 职场文书
MySQL系列之七 MySQL存储引擎
2021/07/02 MySQL