老生常谈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输出表格的实现代码(修正版)
Dec 29 PHP
php正则表达式使用的详细介绍
Apr 27 PHP
测试PHP连接MYSQL成功与否的代码
Aug 16 PHP
PHP中ini_set和ini_get函数的用法小结
Feb 18 PHP
可以保证单词完整性的PHP英文字符串截取代码分享
Jul 15 PHP
PHPUnit安装及使用示例
Oct 29 PHP
php使用fgetcsv读取csv文件出现乱码的解决方法
Nov 08 PHP
php实现word转html的方法
Jan 22 PHP
Thinkphp框架开发移动端接口(2)
Aug 18 PHP
PHP Class SoapClient not found解决方法
Jan 20 PHP
PHP ADODB生成下拉列表框功能示例
May 29 PHP
yii框架结合charjs实现统计30天数据的方法
Apr 04 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正则走开
2008/03/15 PHP
QueryPath PHP 中的jQuery
2010/04/11 PHP
php smarty 二级分类代码和模版循环例子
2011/06/01 PHP
解析Ubuntu下crontab命令的用法
2013/06/24 PHP
PHP正则删除HTML代码中宽高样式的方法
2017/06/12 PHP
ThinkPHP 框架实现的读取excel导入数据库操作示例
2020/04/14 PHP
Avengerls vs Newbee BO3 第一场2.18
2021/03/10 DOTA
一种JavaScript的设计模式
2006/11/22 Javascript
javascript 限制输入脚本大全
2009/11/03 Javascript
ASP Json Parser修正版
2009/12/06 Javascript
jquery 双色表格实现代码
2009/12/08 Javascript
window.open以post方式将内容提交到新窗口
2012/12/26 Javascript
JS实现仿腾讯微博无刷新删除微博效果代码
2015/10/16 Javascript
Node.js编写爬虫的基本思路及抓取百度图片的实例分享
2016/03/12 Javascript
浅析Javascript ES6新增值比较函数Object.is
2016/08/24 Javascript
Knockout结合Bootstrap创建动态UI实现产品列表管理
2016/09/14 Javascript
使用jquery.qrcode.js生成二维码插件
2016/10/17 Javascript
浅谈vue的iview列表table render函数设置DOM属性值的方法
2017/09/30 Javascript
js断点调试经验分享
2017/12/08 Javascript
Angular7创建项目、组件、服务以及服务的使用
2019/02/19 Javascript
浅谈js闭包理解
2019/04/01 Javascript
layer.open提交子页面的form和layedit文本编辑内容的方法
2019/09/27 Javascript
Python抓取淘宝下拉框关键词的方法
2015/07/08 Python
Python利用正则表达式匹配并截取指定子串及去重的方法
2015/07/30 Python
解决Python安装后pip不能用的问题
2018/06/12 Python
tensorflow 中对数组元素的操作方法
2018/07/27 Python
python绘制地震散点图
2019/06/18 Python
Python进程池Pool应用实例分析
2019/11/27 Python
探秘TensorFlow 和 NumPy 的 Broadcasting 机制
2020/03/13 Python
python实现文法左递归的消除方法
2020/05/22 Python
深入分析python 排序
2020/08/24 Python
中国网上药店领导者:1药网
2017/02/16 全球购物
珍爱生命演讲稿
2014/05/10 职场文书
财务会计实训报告
2014/11/05 职场文书
餐饮食品安全责任书
2015/01/29 职场文书
Java后端 Dubbo retries 超时重试机制的解决方案
2022/04/14 Java/Android