博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP 正则表达式匹配函数 preg_match 与 preg_match_all
阅读量:6957 次
发布时间:2019-06-27

本文共 1645 字,大约阅读时间需要 5 分钟。

preg_match()

preg_match() 函数用于进行正则表达式匹配,成功返回 1 ,否则返回 0 。

语法:

int preg_match( string pattern, string subject [, array matches ] )

参数说明:

参数 说明
pattern 正则表达式
subject 需要匹配检索的对象
matches 可选,存储匹配结果的数组, $matches[0] 将包含与整个模式匹配的文本,$matches[1] 将包含与第一个捕获的括号中的子模式所匹配的文本,以此类推

例子 1:

输出:

A match was found:PHP

在该例子中,由于使用了 i 修正符,因此会不区分大小写去文本中匹配 php 。

 

注意:

preg_match() 第一次匹配成功后就会停止匹配,如果要实现全部结果的匹配,即搜索到subject结尾处,则需使用 preg_match_all() 函数。

例子 2 ,从一个 URL 中取得主机域名 :

输出:

域名为:snsgou.com

 

preg_match_all()

preg_match_all() 函数用于进行正则表达式全局匹配,成功返回整个模式匹配的次数(可能为零),如果出错返回 FALSE 。

语法:

int preg_match_all( string pattern, string subject, array matches [, int flags ] )

参数说明:

参数 说明
pattern 正则表达式
subject 需要匹配检索的对象
matches 存储匹配结果的数组
flags

可选,指定匹配结果放入 matches 中的顺序,可供选择的标记有:

  1. PREG_PATTERN_ORDER:默认,对结果排序使 $matches[0] 为全部模式匹配的数组,$matches[1] 为第一个括号中的子模式所匹配的字符串组成的数组,以此类推
  2. PREG_SET_ORDER:对结果排序使 $matches[0] 为第一组匹配项的数组,$matches[1] 为第二组匹配项的数组,以此类推
  3. PREG_OFFSET_CAPTURE:如果设定本标记,对每个出现的匹配结果也同时返回其附属的字符串偏移量

下面的例子演示了将文本中所有 <pre></pre> 标签内的关键字(php)显示为红色。

学习php是一件快乐的事。
所有的phper需要共同努力!
";$kw = "php";preg_match_all('/
([\s\S]*?)<\/pre>/', $str, $mat);for ($i = 0; $i < count($mat[0]); $i++){	$mat[0][$i] = $mat[1][$i];	$mat[0][$i] = str_replace($kw, '' . $kw . '', $mat[0][$i]);	$str = str_replace($mat[1][$i], $mat[0][$i], $str);}echo $str;?>

输出效果:

简化一下:

学习php是一件快乐的事。
所有的phper需要共同努力!
";preg_match_all('/
([\s\S]*?)<\/pre>/', $str, $matches);print_r($matches);?>

输出:

Array(    [0] => Array        (            [0] => 
学习php是一件快乐的事。
[1] =>
所有的phper需要共同努力!
) [1] => Array ( [0] => 学习php是一件快乐的事。 [1] => 所有的phper需要共同努力! ))

 

 

参考:

转载地址:http://wtmil.baihongyu.com/

你可能感兴趣的文章
Python下selenium的简单用法
查看>>
multiset的应用
查看>>
我的mysql的学习记录
查看>>
Codeforces Round #416 (Div. 2)(A,思维题,暴力,B,思维题,暴力)
查看>>
NYOJ 题目77 开灯问题(简单模拟)
查看>>
模式识别
查看>>
设置文本编辑器的按回车时触发的事件
查看>>
关于android手机不能打印Log日志
查看>>
hdu 2157 How many ways?? **
查看>>
xcode8 更新cocoapods
查看>>
习题:海盗船(广搜)
查看>>
auto_ptr
查看>>
Windows系统的消息机制
查看>>
谈谈java中静态变量与静态方法在有继承关系的两个类中调用
查看>>
基础练习 十六进制转八进
查看>>
人工智能赢了人类,那又如何?
查看>>
Shell中字符串、数值的比较
查看>>
Arg_parser 1.8 发布,C++ 参数解析库
查看>>
DAC--解决windows验证无法登陆的问题
查看>>
[CALayer release]: message sent to deallocated instance iOS内存过度释放问题
查看>>