PHP中的正则表达式相关函数

常用的正则函数

1、执行一个正则表达式匹配

int preg_match ( string pattern , string subject [, array &matches [, int flags = 0 [, int offset = 0 ]]] )

搜索subjectpattern给定的正则表达式的一个匹配.

  • pattern 要匹配的正则表达式
  • subject 匹配的字符串
  • matches 匹配到结果

返回值为 pattern 的匹配次数

$subject="jack001 is my name,so I'am jack007";
$pattern='/jack[0-9]+/';
echo preg_match($pattern, $subject,$matches);
echo '<pre>';
print_r($matches); echo preg_match_all($pattern, $subject,$matches);
echo '<pre>';
print_r($matches);

2、执行一个全局正则表达式匹配

int preg_match_all ( string pattern , string subject [, array &matches [, int flags = 0 [, int offset = 0 ]]] )

搜索subject中所有匹配pattern给定正则表达式 的匹配结果并且将它们以flag指定顺序输出到matches中.

  • pattern 要匹配的正则表达式
  • subject 匹配的字符串
  • matches 多维数组,作为输出参数输出所有匹配结果, 数组排序通过flags指定。

返回值:返回完整匹配次数(可能是0),或者如果发生错误返回FALSE

$subject="jack001 is my name,so I'am jack007";
$pattern='/jack[0-9]+/';
echo preg_match($pattern, $subject,$matches);
echo '<pre>';
print_r($matches); echo preg_match_all($pattern, $subject,$matches);
echo '<pre>';
print_r($matches);

3、转义正则表达式字符

string preg_quote ( string str [, string delimiter = NULL ] )

参数 描述
str 输入的字符串每个正则表达式语法中的字符前增加一个反斜线
delimiter 可选。如果指定了该参数,它也会被转义。这通常用于转义PCRE函数使用的分隔符。/是最通用的分隔符。

正则表达式特殊字符有:_ . \ + _? [ ^ ] $ ( ) { } = ! < > | : - 返回* 转义后的字符串。

$str = "php点点通是一个学习php的网站,(⊙o⊙)…";
echo preg_quote($str); echo "<hr />";
$keywords = '$40 for a g3/400';
$keywords = preg_quote($keywords,'/');
echo $keywords; //preg_quote($word) 用于保持星号原文,使其不使用正则表达式中的特殊语义。
$textbody = "This book is *very* difficult to find.";
$word = "*very*";
$textbody = preg_replace ("/" . preg_quote($word) . "/",
"<i>" . $word . "</i>",
$textbody);
echo $textbody;

4、替换匹配模式的所有字符串

mixed preg_replace( mixed pattern,mixed replacement,mixed str [,int limit [,int count]] )

preg_replace()函数会用replacement的内容替换与pattern匹配的所有字符串,并返回修改后的结果

  • pattern/replacement 可以是字符串,也可以是数组
  • limit 指定应当发生多少次匹配。没有设置或是设置-1,就是替换所有。
  • count 总共发生多少了多少次匹配。
$subject='he and hello word and here';
$pattern='/he/';//想匹配单词he
echo preg_match_all($pattern, $subject,$matches);
echo '<pre>';
print_r($matches);
$replacement = '##';
//echo preg_replace($pattern, $replacement, $subject,-1,$count);
echo preg_replace($pattern, $replacement, $subject,2,$count);
var_dump($count); //反向引用
$subject = "April 15, 2003";
$pattern = "/(\w+) (\d+), (\d+)/i";
//$string = preg_replace($pattern, '\\\\3年\\1月\\2日', $subject);
$string = preg_replace($pattern, '${3}年${1}月${2}日', $subject);
echo $string; //使用索引数组
$string = "The quick brown fox jumped over the lazy dog.";
$patterns[0] = "/quick/";
$patterns[1] = "/brown/";
$patterns[2] = "/fox/";
$replacements[2] = "bear";
$replacements[1] = "black";
$replacements[0] = "slow";
print preg_replace($patterns, $replacements, $string);

PHP5.5.0 /e 修饰符已经被弃用了

5、执行一个正则表达式搜索并且使用一个回调进行替换

mixed preg_replace_callback ( mixed pattern , callable callback , mixed subject [, int limit = -1 [, int &count ]]

这个函数的行为除了 可以指定一个 callback 替代 replacement 进行替换 字符串的计算,其他方面等同于 preg_replace()

$str = 'hello_world';
//$string = preg_replace("/([a-z]*)_([a-z]*)/e", "ucfirst('\\1').ucfirst('\\2')", $str); $callback = function($match){
return ucfirst($match[1]).ucfirst($match[2]);
};
$string = preg_replace_callback("/([a-z]*)_([a-z]*)/", $callback, $str);
echo $string;

PHP中的正则表达式相关函数的更多相关文章

  1. js中几个正则表达式相关函数使用时g标志的作用

    首先,javascript中涉及到正则表达式的函数总共有6个,可分为两种: 1.第一种是作为字符串对象的方法,即以 String.fun(); 形式调用,这里包括 split.search.match ...

  2. 精通 JavaScript中的正则表达式

    精通 JS正则表达式 (精通?标题党 ) 正则表达式可以: •测试字符串的某个模式.例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式.这称为数据有效性验证  ...

  3. PHP中有关正则表达式的函数集锦

    之前学正则表达式的目的是想从网上抓取点小说啊,文档啊,还有获取相应的视频连接然后批量下载.当时初学PHP根本不知道PHP有专门抓包的工具,就像Simple_html_dom.php(在我的其他博文中有 ...

  4. JavaScript中的正则表达式(终结篇)

    JavaScript中的正则表达式(终结篇) 在之前的几篇文章中,我们了解了正则表达式的基本语法,但那些语法不是针对于某一个特定语言的.这篇博文我们将通过下面几个部分来了解正则表达式在JavaScri ...

  5. Coursera-Getting and Cleaning Data-week4-R语言中的正则表达式以及文本处理

    博客总目录:http://www.cnblogs.com/weibaar/p/4507801.html Thursday, January 29, 2015 补上第四周笔记,以及本次课程总结. 第四周 ...

  6. 9.JAVA中的正则表达式

    一.JAVA中的正则表达式 1.概念:以某种特定的方式描述字符串 1.Java中正则表达式的规则 ?          #{0,1}-?有一个-或者没有 \\           #表示一个" ...

  7. Python::re 模块 -- 在Python中使用正则表达式

    前言 这篇文章,并不是对正则表达式的介绍,而是对Python中如何结合re模块使用正则表达式的介绍.文章的侧重点是如何使用re模块在Python语言中使用正则表达式,对于Python表达式的语法和详细 ...

  8. 工作随笔——UIButton的EdgeInsets + Swift中的正则表达式;

    1.UIButton的EdgeInsets UIButton的EdgeInsets方法,是用来设置title和image对于上左下右四个方向的偏移,但是很奇怪的是,刚开始只有Image,titile也 ...

  9. Javascript中的正则表达式

    Javascript中的正则表达式 刚开始接触正则表达式的时候,觉得这是个很死板的东西(没办法,计算机不能像人眼一样能很快的辨认出我们需要的结果,它需要一定的规则来对它进行限制),了解的越多,发现这个 ...

  10. 在Visual Studio中使用正则表达式匹配换行和批量替换

    系统环境:Windows 8.1 Enterprise Update 2 x64 开发环境:Mircosoft Visual Studio Ultimate 2013 Update 2 RC 问题:如 ...

随机推荐

  1. 探究Presto SQL引擎(2)-浅析Join

    作者:vivo互联网技术-Shuai Guangying 在<探究Presto SQL引擎(1)-巧用Antlr>中,我们介绍了Antlr的基本用法以及如何使用Antlr4实现解析SQL查 ...

  2. 如何用 7 分钟击破 Serverless 落地难点?

    当前,Serverless 覆盖的技术场景正在不断变广.Serverless 已在微服务.在线应用.事件驱动.任务处理等众多场景被验证且广泛应用 .当你想要部署一个网站时,需要自己购买服务器并花费时间 ...

  3. iview 将Modal抽取成组件并控制Modal的显示隐藏

    开发中遇到Modal弹出框的内容太多,就想把Modal单独分装成一个组件,但是发现封装成组件后Modal的关闭和打开有问题.如下方法可以解决这个问题. 父级页面: <PriceInfodModa ...

  4. Threejs实现一个园区

    一.实现方案 单独贴代码可能容易混乱,所以这里只讲实现思路,代码放在最后汇总了下. 想要实现一个简单的工业园区.主要包含的内容是一个大楼.左右两片停车位.四条道路以及多个可在道路上随机移动的车辆.遇到 ...

  5. freeswitch的mod_xml_curl模块

    概述 freeswitch是一款简单好用的VOIP开源软交换平台. 随着fs服务的增多,每一台fs都需要在后台单独配置,耗时耗力,心力憔悴. 如果有一个集中管理配置的配置中心,统一管理所有fs的配置, ...

  6. 机器学习-线性分类-支持向量机SVM-SMO算法-14

    目录 1. SVM算法总结 2. SMO算法 1. SVM算法总结 选择 核函数 以及对应的 超参数 为什么要选择核函数? 升维 将线性问题不可分问题 升维后转化成 线性可分的问题 核函数 有那些? ...

  7. cs 保研经验贴 | 英语口试

    很多夏令营都有英语面试环节.但这其实是有迹可循的,多说几遍就熟练了. 无论是笔试面试,还是联系导师 联系 hr,这种自我推销的事情,都会越做越熟练的.希望发表也是如此吧-(来自博零菜鸟的碎碎念-) 目 ...

  8. 【C】《C专家编程》阅读体会

     [来源]https://mp.weixin.qq.com/s/0kmN5knql4yrOuUcnebwIQ

  9. [转帖]linux磁盘IO读写性能优化

    在LINUX系统中,如果有大量读请求,默认的请求队列或许应付不过来,我们可以 动态调整请求队列数来提高效率,默认的请求队列数存放在/sys/block/xvda/queue/nr_requests 文 ...

  10. [转帖]gcc与makefile常用操作(绝对常用,也绝对够用)

    makefile与gcc常用操作 一.温故知新 1.可执行程序的生成过程 2.gcc的常用操作 二.make操作 三.编写Makefile文件时常用操作 注意:在Makefile文件中 空格和缩进是完 ...