preg_match 与 preg_match_all
案例一:
<?php $str = 'abcdef123456';
preg_match('/[a-z1-9]+/', $str, $res);
var_dump($res); preg_match('/([a-z1-9])+/', $str, $res);
var_dump($res); preg_match('/(\w)+/', $str, $res);
var_dump($res);
-------------------------------------------以上3个正则分别输出:
array() {
[]=>
string() "abcdef123456"
}
array() {
[]=>
string() "abcdef123456"
[]=>
string() ""
}
array() {
[]=>
string() "abcdef123456"
[]=>
string() ""
}
------------------------------------------- preg_match_all('/[a-z1-9]+/', $str, $res);
var_dump($res); preg_match_all('/([a-z1-9])+/', $str, $res);
var_dump($res); preg_match_all('/(\w)+/', $str, $res);
var_dump($res);
-------------------------------------------以上3个正则分别输出
array() {
[]=>
array() {
[]=>
string() "abcdef123456"
}
}
array() {
[]=>
array() {
[]=>
string() "abcdef123456"
}
[]=>
array() {
[]=>
string() ""
}
}
array() {
[]=>
array() {
[]=>
string() "abcdef123456"
}
[]=>
array() {
[]=>
string() ""
}
}
-------------------------------------------
此处拿preg_match 与 preg_match_all 说明 \w [] () 不同表达方式下,匹配的结果异同
案例二:
<?php $str = 'qwe.123.asd.456';
preg_match('/([a-z]+)\.([1-9]+)\.([a-z]+)\.([1-9]+)/', $str, $res);
var_dump($res); preg_match_all('/([a-z]+)\.([1-9]+)\.([a-z]+)\.([1-9]+)/', $str, $res);
var_dump($res);
-------------------------分别输出 array() {
[]=>
string() "qwe.123.asd.456"
[]=>
string() "qwe"
[]=>
string() ""
[]=>
string() "asd"
[]=>
string() ""
}
array() {
[]=>
array() {
[]=>
string() "qwe.123.asd.456"
}
[]=>
array() {
[]=>
string() "qwe"
}
[]=>
array() {
[]=>
string() ""
}
[]=>
array() {
[]=>
string() "asd"
}
[]=>
array() {
[]=>
string() ""
}
}
-------------------------- $str = 'qwe.123.asd.456';
preg_match('/([a-z])+\.([1-9])+\.([a-z])+\.([1-9])+/', $str, $res);
var_dump($res); preg_match_all('/([a-z])+\.([1-9])+\.([a-z])+\.([1-9])+/', $str, $res);
var_dump($res);
------------------------分别输出 array() {
[]=>
string() "qwe.123.asd.456"
[]=>
string() "e"
[]=>
string() ""
[]=>
string() "d"
[]=>
string() ""
}
array() {
[]=>
array() {
[]=>
string() "qwe.123.asd.456"
}
[]=>
array() {
[]=>
string() "e"
}
[]=>
array() {
[]=>
string() ""
}
[]=>
array() {
[]=>
string() "d"
}
[]=>
array() {
[]=>
string() ""
}
}
上面2个案例,是为更好理解第三个案例.
案例三:
preg_match与preg_match_all区别: 前者匹配成功后就放弃后续匹配; 后者第一次匹配成功后,继续匹配到结尾.
preg_match_all涉及2种匹配方式.官方文档解释如下,int preg_match_all ( string $pattern
, string $subject
[, array &$matches
[, int $flags
= PREG_PATTERN_ORDER
[, int $offset
= 0 ]]] )
PREG_PATTERN_ORDER:
结果排序为
$matches[0]保存完整模式的所有匹配, $matches[1] 保存第一个子组的所有匹配, 以此类推.
PREG_SET_ORDER:
结果排序为$matches[0]包含第一次匹配得到的所有匹配(包含子组), $matches[1]是包含第二次匹配到的所有匹配(包含子组)的数组, 以此类推.
<?php $str = '111-222;333-444';
preg_match('/([1-9]+)-([1-9]+)/', $str, $res);
var_dump($res); preg_match_all('/([1-9]+)-([1-9]+)/', $str, $res);//默认是PREG_PATTERN_ORDER 方式匹配
var_dump($res); preg_match_all('/([1-9]+)-([1-9]+)/', $str, $res, PREG_SET_ORDER);//再看PREG_SET_ORDER 方式匹配
var_dump($res);
---------------------------------以上3个正则输出 array() {
[]=>
string() "111-222"
[]=>
string() ""
[]=>
string() ""
}
array() {
[]=>
array() {
[]=>
string() "111-222"
[]=>
string() "333-444"
}
[]=>
array() {
[]=>
string() ""
[]=>
string() ""
}
[]=>
array() {
[]=>
string() ""
[]=>
string() ""
}
}
array() {
[]=>
array() {
[]=>
string() "111-222"
[]=>
string() ""
[]=>
string() ""
}
[]=>
array() {
[]=>
string() "333-444"
[]=>
string() ""
[]=>
string() ""
}
}
preg_match 与 preg_match_all的更多相关文章
- php 函数preg_match、preg_match_all ,以及正则表达式规则
<?php $str = 'php is the best language phhhhp is'; $part = '/ph{1,}p/'; echo preg_match($part, $s ...
- PHP 正则表达式匹配 preg_match 与 preg_match_all 函数
--http://www.5idev.com/p-php_preg_match.shtml 正则表达式在 PHP 中的应用 在 PHP 应用中,正则表达式主要用于: 正则匹配:根据正则表达式匹配相应的 ...
- PHP 正则表达式匹配函数 preg_match 与 preg_match_all
preg_match() preg_match() 函数用于进行正则表达式匹配,成功返回 1 ,否则返回 0 . 语法: 1 int preg_match( string pattern, strin ...
- preg_match 与 preg_match_all 函数示例详解
正则表达式在 PHP 中的应用 在 PHP 应用中,正则表达式主要用于: 正则匹配:根据正则表达式匹配相应的内容 正则替换:根据正则表达式匹配内容并替换 正则分割:根据正则表达式分割字符串 在 PHP ...
- php preg_match 和preg_match_all
$h3=trim('[我要变强][主流程]整体功能测试点');$matches=array();preg_match_all('/[(.+?)]/', $h3,$matches); print_r($ ...
- php中函数preg_match或preg_match_all 第三个参数$match的解释
理解自:http://www.cnblogs.com/vicenteforever/articles/1623137.html php手册中是这样解释的 matches 如果提供了参数matches, ...
- JavaScript与PHP中正则
一.JavaScript 有个在线调试正则的工具,点击查看工具.下面的所有示例代码,都可以在codepen上查看到. 1.创建正则表达式 var re = /ab+c/; //方式一 正则表达式字面量 ...
- php 正则表达式的使用
要点:php正则表达式要用双引号,且要用“/ /”斜线做开始结束. 1.preg_match . preg_match_all 两者的区别:第一次匹配成功后就会停止匹配,如果要实现全部结果的匹配,即搜 ...
- 最常用的PHP正则表达式收集整理
最常用的PHP正则表达式收集整理 提交 我的评论 加载中 已评论 最常用的PHP正则表达式收集整理 2015-03-20 PHP100中文网 PHP100中文网 PHP100中文网 微信号 功能介绍 ...
随机推荐
- ARPG游戏打击感相关的技术简单总结
说好的技术总结,根据近期的工作总结一下体现游戏打击感相关的技术.一般arpg的游戏打击感除了场景的氛围的烘托,策划的数值:连击,奖励伤害数字的连贯积累反馈,硬直加物理击飞ragdoll,更不可忽视的也 ...
- Configuring Oracle E-Business Suite Integrated SOA Gateway Release 12.1.2 and Release 12.1.3 in a Multinode Environment (Doc ID 1081100.1)
Configuring Oracle E-Business Suite Integrated SOA Gateway Release 12.1.2 and Release 12.1.3 in a Mu ...
- firedac odbc sql server driver连接占线导致另一个hstmt
firedac odbc sql server driver连接占线导致另一个hstmt 原因:FDQuery.FetchOptions.Mode=fmOnDemand.好像是为了性能问题,不设置则默 ...
- dxbarmanager生成传统下拉式样的菜单
传统菜单 //创建一个dxSubItem,相当于创建一个主菜单项 dxBarSubItem := TdxBarSubItem.Create(Self); dxBarSubItem.Caption := ...
- Kindeditor编辑器上传附件,自动获取文件名显示。
大部分在线编辑器在上传附件之后都是会以路径的形式显示出来很不友好.类似这样..怎么样显示成这样用户上传的原始文件名呢.就是这样.是不是看着很友好. kindeditor编辑器上传文件是已插件的形式调用 ...
- WPF Image显示图片,文件被占用异常
imageControl.Source = this.GetBitmapImage(imagePath);//imageControl为WPF Image控件 public BitmapImage G ...
- C# 收银机顾显(客显)及打印小票(58热敏打印机)
最近做winform收银机,设计顾显及打印小票总结. 1.顾显(串口COM1) 只涉及到总计,所以只是简单的功能. public static ClientDisplayResult Display( ...
- Android学习之Adapter(数据适配器)
1.定义 数据适配器是AdapterView视图(如ListView - 列表视图控件.Gallery - 缩略图浏览器控件.GridView - 网格控件.Spinner - 下拉列表控件. ...
- Docker 修改镜像源地址
Docker 官方中国区 https://registry.docker-cn.com 网易 http://hub-mirror.c.163.com ustc https://docker.mirro ...
- Delphi XE7实现的任意位置弹出菜单
Delphi XE7中目前还没有弹出菜单组件,这个弹出菜单应用很普遍,在JAVA开发的安卓程序中很简单就可以用上了,应该说是一个标准控件.看了一些例子,但是都不能满足我想在任意位置弹出菜单需求,于是自 ...