老生常谈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 相关文章推荐
为php4加入动态flash文件的生成的支持
Oct 09 PHP
vBulletin Forum 2.3.xx SQL Injection
Oct 09 PHP
PHP 开发工具
Dec 06 PHP
Uchome1.2 1.5 代码学习 common.php
Apr 24 PHP
php防攻击代码升级版
Dec 29 PHP
实用PHP会员权限控制实现原理分析
May 29 PHP
ubuntu下配置nginx+php+mysql详解
Sep 10 PHP
php中的登陆login实例代码
Jun 20 PHP
PHP通过微信跳转的Code参数获取用户的openid(关键代码)
Jul 06 PHP
Yii框架日志记录Logging操作示例
Jul 12 PHP
php判断目录存在的简单方法
Sep 26 PHP
php抽象方法和普通方法的区别点总结
Oct 13 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实现插入数组但不影响原有顺序的方法
2015/03/27 PHP
PHP函数引用返回的实例详解
2016/09/11 PHP
简单谈谈PHP面向对象之标识对象
2017/06/27 PHP
javascript indexOf函数使用说明
2008/07/03 Javascript
cookie.js 加载顺序问题怎么才有效
2013/07/31 Javascript
iframe的父子窗口之间的对象相互调用基本用法
2013/09/03 Javascript
AngularJS入门教程(零):引导程序
2014/12/06 Javascript
js实现键盘控制DIV移动的方法
2015/01/10 Javascript
深入理解JavaScript系列(37):设计模式之享元模式详解
2015/03/04 Javascript
JAVASCRIPT代码编写俄罗斯方块网页版
2015/11/26 Javascript
jQuery选择器基础入门教程
2016/05/10 Javascript
为jQuery-easyui的tab组件添加右键菜单功能的简单实例
2016/10/10 Javascript
express文件上传中间件Multer详解
2016/10/24 Javascript
基于JS实现9种不同的面包屑和分布式多步骤导航效果
2017/02/21 Javascript
vue-cli项目中使用公用的提示弹层tips或加载loading组件实例详解
2018/05/28 Javascript
Vue实现todolist删除功能
2018/06/26 Javascript
微信小程序使用component自定义toast弹窗效果
2018/11/27 Javascript
细说Vue组件的服务器端渲染的过程
2019/05/30 Javascript
解决layui的使用以及针对select、radio等表单组件不显示的问题
2019/09/05 Javascript
vue子传父关于.sync与$emit的实现
2019/11/05 Javascript
[58:15]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 NB vs Liquid
2018/04/02 DOTA
python交互式图形编程实例(三)
2017/11/17 Python
DataFrame中去除指定列为空的行方法
2018/04/08 Python
python Shapely使用指南详解
2020/02/18 Python
PyQt5 QDockWidget控件应用详解
2020/08/12 Python
乐天旅游香港网站:日本饭店预订
2017/11/29 全球购物
JSF如何进行表格处理及取值
2012/08/06 面试题
专业求职信撰写要诀
2014/02/18 职场文书
元旦晚会策划方案
2014/02/18 职场文书
银行竞聘演讲稿范文
2014/04/23 职场文书
孟佩杰观后感
2015/06/17 职场文书
辩论会主持词
2015/07/03 职场文书
安全生产感想
2015/08/07 职场文书
房屋买卖定金协议书
2016/03/21 职场文书
Python基本数据类型之字符串str
2021/07/21 Python
详解JAVA的控制语句
2021/11/11 Java/Android