正则表达式,匹配查找函数(preg_match_all)flags参数对比
格式:
int preg_match_all ( string pattern, string subject, array matches [, int flags] )
参数 flags 选项有以下3个:
PREG_PATTERN_ORDER //是默认参数
PREG_SET_ORDER
PREG_OFFSET_CAPTURE
我们用例子来看看 PREG_PATTERN_ORDER 和 PREG_SET_ORDER 的区别。(须查看源代码)
<?php $str = '<a href="http://www.baidu.com/">百度</a>,
<a href="http://www.google.com/">谷歌</a>,
<a href="http://www.caiguai.net/">怪手论坛</a>'; preg_match_all('/<a href="(.*?)">(.*?)<\/a>/', $str, $matches_pattern, PREG_PATTERN_ORDER);
preg_match_all('/<a href="(.*?)">(.*?)<\/a>/', $str, $matches_set, PREG_SET_ORDER); echo "<pre>"; print_r($matches_pattern); echo "<p>"; print_r($matches_set);
$matches_pattern 返回的数据为:
Array
(
[0] => Array
(
[0] => <a href="http://www.baidu.com/">百度</a>
[1] => <a href="http://www.google.com/">谷歌</a>
[2] => <a href="http://www.caiguai.net/">怪手论坛</a>
) [1] => Array
(
[0] => http://www.baidu.com/
[1] => http://www.google.com/
[2] => http://www.caiguai.net/
) [2] => Array
(
[0] => 百度
[1] => 谷歌
[2] => 怪手论坛
) )
$matches_set 返回的数据为:
Array
(
[0] => Array
(
[0] => <a href="http://www.baidu.com/">百度</a>
[1] => http://www.baidu.com/
[2] => 百度
) [1] => Array
(
[0] => <a href="http://www.google.com/">谷歌</a>
[1] => http://www.google.com/
[2] => 谷歌
) [2] => Array
(
[0] => <a href="http://www.caiguai.net/">怪手论坛</a>
[1] => http://www.caiguai.net/
[2] => 怪手论坛
) )
而根据我之前阅读别人代码,就一直认为应该这么来组合结果:
foreach ($matches_pattern[0] as $tid=>$val) {
echo '链接:'.$matches_pattern[1][$tid];
echo '网址:'.$matches_pattern[2][$tid];
echo "\r\n";
}
/**
* 返回结果为:
*
链接:http://www.baidu.com/网址:百度
链接:http://www.google.com/网址:谷歌
链接:http://www.caiguai.net/网址:怪手论坛
*/
而PREG_SET_ORDER,就在于重新组合的数据,使得数组数据可以更方便的利用:
foreach ($matches_set as $v) {
echo '链接:'.$v[1];
echo '网址:'.$v[2];
echo "\r\n";
}
/**
* 返回结果为:
*
链接:http://www.baidu.com/网址:百度
链接:http://www.google.com/网址:谷歌
链接:http://www.caiguai.net/网址:怪手论坛
*/
正则表达式,匹配查找函数(preg_match_all)flags参数对比的更多相关文章
- 使用正则表达式匹配JS函数代码
使用正则表达式匹配JS函数代码 String someFunction="init"; Pattern regex = Pattern.compile("function ...
- PHP 正则表达式匹配 preg_match 与 preg_match_all 函数
--http://www.5idev.com/p-php_preg_match.shtml 正则表达式在 PHP 中的应用 在 PHP 应用中,正则表达式主要用于: 正则匹配:根据正则表达式匹配相应的 ...
- Java使用正则表达式匹配多行 Pattern flags
Java中正则匹配有多种模式,若不选择模式则默认为单行匹配 匹配模式(Pattern flags) compile()方法有两个模式 未开匹配模式 Pattern compile(String reg ...
- php第五天-正则表达式,字符串的匹配与查找函数,数组切割
在php中有两套正则表达式,两者功能相似,一套是由PCRE,使用"preg_"为前缀命名的函数,一套是由POSIX拓展提供的,使用以"ereg_"命名的函数 0 ...
- [No0000100]正则表达式匹配解析过程分析(正则表达式匹配原理)&regexbuddy使用&正则优化
常见正则表达式引擎引擎决定了正则表达式匹配方法及内部搜索过程,了解它至关重要的.目前主要流行引擎有:DFA,NFA两种引擎. 引擎 区别点 DFA Deterministic finite autom ...
- PHP 正则表达式匹配函数 preg_match 与 preg_match_all
preg_match() preg_match() 函数用于进行正则表达式匹配,成功返回 1 ,否则返回 0 . 语法: 1 int preg_match( string pattern, strin ...
- Excel函数匹配查找
需求 例如:北京沃尔玛有限公司,由已知的沃尔玛缩写,将两者进行匹配. 函数 lookup() 第一个参数“Lookup_value”:是要查找的值:第二个参数“lookup_vector”:是要查找的 ...
- Js 利用正则表达式和replace函数获取string中所有被匹配到的文本
js的replace函数除了替换文本以外还有获取所有被正则表达式匹配到的文本的功能.这里以一个简单的案例来作为演示. 利用正则查找出所有被两个花括号包裹的字符串: var str = '<div ...
- Python 正则表达式 flags 参数
flags参数 re.I IGNORECASE 忽略字母大小写 re.L LOCALE 影响 “w, “W, “b, 和 “B,这取决于当前的本地化设置. re.M MULTILINE 使用本标志后, ...
随机推荐
- HDU1540 Tunnel Warfare —— 线段树 区间合并
题目链接:https://vjudge.net/problem/HDU-1540 uring the War of Resistance Against Japan, tunnel warfare w ...
- ubuntu删除ppa源
cd /etc/apt/sources.list.d 都在这里了 drwxr-xr-x 2 root root 4096 5月 22 23:41 ./ drwxr-xr-x 6 root root 4 ...
- poyla计数问题
关于poyla定理,首先推荐两篇很好的文章阅读 2001-----符文杰<poyla原理及其应用> 2008-----陈瑜希<poyla计数法的应用> 在然后就是自己的学习笔记 ...
- CSYZDay2模拟题解
T1.rotate [问题描述] ZYL有N张牌编号分别为1, 2,……,N.他把这N张牌打乱排成一排,然后他要做一次旋转使得旋转后固定点尽可能多.如果第i个位置的牌的编号为i,我们就称之为固定点.旋 ...
- 用jQuery插件来提升SharePoint列表表单用户体验
本文将描述如何通过简单的CSS和jQuery插件提升SharePoint默认的列表表单体验.这些小技巧并不仅仅改善了外观,还提升了可用性. 剩余字数 我们以通知列表为例.通知正文字段假设要求不应该超过 ...
- UI:沙盒
IOS平台下,沙盒的本质就是一个文件夹 每一款IOS应用安装在手机上都会自动的生成一个文件夹.之所以叫沙盒,就是因为这个文件夹是每次运行随机产生的文件夹.沙盒文件夹是独立的,每个应用之间不能互相访问. ...
- 浅谈JAVA中如何利用socket进行网络编程(二)
转自:http://developer.51cto.com/art/201106/268386.htm Socket是网络上运行的两个程序间双向通讯的一端,它既可以接受请求,也可以发送请求,利用它可以 ...
- 浅谈JAVA中如何利用socket进行网络编程(一)
转自:http://developer.51cto.com/art/201106/268385.htm Socket是网络上运行的两个程序间双向通讯的一端,它既可以接受请求,也可以发送请求,利用它可以 ...
- 关于CentOS 7安装solr+tomcat
1.Solr7.1.0 安装部署(centos7) Solr7.1.0为目前的最新版,安装环境需要jdk1.8 或者更高,容器我用的tomcat,也建议tomcat8.0或者更高 1.1.下载solr ...
- 解决 The word is not correctly spelled问题(转载)
转自:http://jyao.iteye.com/blog/1261555 The word is not correctly spelled 此问题是eclipse校验单词拼写造成,如果出在配置文件 ...