PHP学习总结(正则表达式、日期与时间)
正则表达式
一、理解正则表达式
描述了一类字符串的特征,然后通过这个特征可以配合一些特定的函数,来完成对字符串更加复杂的一系列操作! 普通字符和特殊字符组成的一个字符串
preg_match_all 函数用于执行一个全局正则表达式匹配
<?php
$pattern='/test/';
$str='abctestdwqdwqtestdwqdwqtestdwqdwqdqwtesttest';
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);
?>
输出结果:
int(5)
array(1) { [0]=> array(5) { [0]=> string(4) "test" [1]=> string(4) "test" [2]=> string(4) "test" [3]=> string(4) "test" [4]=> string(4) "test" } }
二、定界符
使用正斜线"/"作为定界的字符,前后一致
三、普通字符
a-z,A-Z,0-9,双引号,单引号没有特殊意义
<?php
/*
元字符:\d
代表0,1,2,3,4,5,6,7,8,9之中的任意一个数字
*/
$pattern='/t\dst/';
$str='abct1sts';
var_dump(preg_match_all($pattern, $str,$arr));
var_dump($arr);
?>
输出结果:
int(1)
array(1) { [0]=> array(1) { [0]=> string(4) "t1st" } }
四、元字符
在正则表达式中有特殊含义的字符
\d 匹配任意一个十进制数字,等价于[0-9]\D 匹配任意一个除十进制数字以外字符,等价于[^0-9]\s 匹配任意一个空白字符,比如换页符、换行符、回车符、制表符、垂直制表符\S 匹配除空白字符以外的任何一个字符\w 匹配任意一个数字或字母或下划线\W 匹配除数字、字母、下划线以外的任意一个字符. 匹配除换行符以外的任意一个字符* 匹配0次、或1次、或多次其前面的字符+ 匹配1次或多次其前面的字符? 匹配0次或1次其前面的字符{n} 表示其前面字符恰好出现n次{n,} 表示其前面字符出现不少于n次{n,m} 表示其前面的字符至少出现n次,最多出现m次^或\A 匹配字符串开始位置$或者\Z 匹配字符串的结束位置| 匹配两个或多个模式[] 匹配方括号中的任意一个字符[^] 匹配除方括号中字符以外的任意一个字符
<?php
/*元字符:\D
除了0,1,2,3,4,5,6,7,8,9之外的任意一个字符
*/
$pattern='/t\Dst/';
$str='abct@sts';
var_dump(preg_match_all($pattern, $str,$arr));
var_dump($arr);
?>
输出结果:
int(1)
array(1) { [0]=> array(1) { [0]=> string(4) "t@st" } }
<?php
/*
\w:匹配任意一个 字母或者数字或者下划线
*/
$pattern='/t\wst/';
$str="abct3sts";
var_dump(preg_match_all($pattern, $str,$arr));
var_dump($arr);
?>
输出结果:
array(1) { [0]=> array(1) { [0]=> string(4) "t3st" } }
四、元字符
<?php
/*
元字符:+匹配1次或多次其前面的字符放在+前面的那个字符可以出现1次,也可以出现多次
*/
$pattern='/te+st/';
$str='abctst';//+代表前面的字符出现1次或者多次,不能不出现。
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);
?>
输出结果:
int(1)
array(1) { [0]=> array(1) { [0]=> string(4) "test" } }
<?php
/*
元字符:?匹配0次或1次其前面的字符放在?前面的那个字符可以出现0次,或者1次
*/
$pattern='/te?st/';
$str='abcteest';
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);
?>
输出结果:
int(0)
array(1) { [0]=> array(0) { } }
<?php
/*
.与{n}配合
*/
$pattern='/t.{3}st/';// t...st
$str='abctabcst';
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);
?>
输出结果:
int(1)
array(1) { [0]=> array(1) { [0]=> string(6) "tabcst" } }
<?php
/*.与*配合
*/$pattern='/t.*st/';//tst
$str='abctst';
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);
?>
输出结果:
int(1)
array(1) { [0]=> array(1) { [0]=> string(3) "tst" } }
<?php
/*
$或\A 匹配字符串的结束位置
*/
$pattern='/test$/';
$str='dwqdtestwqdwqdwqtest';
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);
?>
输出结果:
int(1)
array(1) { [0]=> array(1) { [0]=> string(4) "test" } }
<?php
/*
|
*/
$pattern='/test|abc|AAA/';
$str='efAAAewtestfweabcfwefAAAwe';
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);
?>
输出结果:
int(4)
array(1) { [0]=> array(4) { [0]=> string(3) "AAA" [1]=> string(4) "test" [2]=> string(3) "abc" [3]=> string(3) "AAA" } }
五、模式修正符
常见模式修正符
i 在和模式进行匹配时不区分大小写
m 多行匹配,如果目标字符串 中没有"\n"字符, 或者模式中没有出现^或KaTeX parse error: Expected 'EOF', got '\n' at position 78: … 1)目标字符串中必须包含"\̲n̲" 在字符串中出现"\n"…
\r:回车符
\n:换行符
<?php
/*
模式修正符 : i在和模式进行匹配时不区分大小写
*/
$pattern='/test/i';
$str=' test TEST Test TeSt ';
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);
?>
输出结果:
int(4)
array(1) { [0]=> array(4) { [0]=> string(4) "test" [1]=> string(4) "TEST" [2]=> string(4) "Test" [3]=> string(4) "TeSt" } }
<?php
/*
模式修正符 : m多行匹配
*/
$pattern='/test\r*$/m';
//$str="test\ntest\ntest\ntest";
$str="test
test
test
test";//$str="test\r\ntest\r\ntest\r\ntest";
//在windows操作系统中你所看到的换行(现象 )其实是通过两个字符来完成的(\r\n)
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);
?>
输出结果:
int(4)
array(1) {[0]=>array(4) {[0]=>string(4) "test"[1]=>string(4) "test"[2]=>string(4) "test"[3]=>string(4) "test"}
}
<?php
/*模式修正符 : s
如果设定了此修正符,那么.将匹配所有的字符包括换行符(\n)
*/$pattern='/t.st/s';
$str="t\nst";
/*
$str="t
st";//其实在windows里面就等价于$str="t\r\nst"
*/
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);
?>
输出结果:
int(1)
array(1) {[0]=>array(1) {[0]=>string(4) "t
st"}
}
六、与正则表达式配合的函数
<?php
/*
preg_match()
执行一个正则表达式匹配
参数说明:第一个参数:正则表达式第二个参数:目标字符串第三个参数(可选):放一个变量,执行完成之后,里面会有匹配到的部分以及等等一些数据!第四个参数(可选):可以传PREG_OFFSET_CAPTURE进入(那么第三个参数那个变量里面的数据就会有匹配到的部分的偏移值),默认传的是0第五个参数(可选):可以传一个值,来表示从目标字符串的哪个位置开始搜索(单位是字节)。
*/
$pattern='/t(.*?)st/';
$str='adwdwqdqwdqwtest tdqwst test tvrgrgrst';
var_dump(preg_match($pattern, $str,$arr));
var_dump($arr);
if(preg_match($pattern, $str,$arr,PREG_OFFSET_CAPTURE)){echo '找到啦!<br />';var_dump($arr);
}else{echo '没找到!';
}
?>
输出结果:
int(1)
array(2) {[0]=>string(4) "test"[1]=>string(1) "e"
}
找到啦!<br />array(2) {[0]=>array(2) {[0]=>string(4) "test"[1]=>int(12)}[1]=>array(2) {[0]=>string(1) "e"[1]=>int(13)}
}
第四个参数(可选):
PREG_PATTERN_ORDER
PREG_SET_ORDER
PREG_OFFSET_CAPTURE
第五个参数(可选):可以传一个值,来表示从目标字符串的哪个位置开始搜索(单位是字节)。
preg_replace第一个参数与第二个参数传数组,一一对应的去替换!
日期与时间
一、设置时区
date_default_timezone_set('Asia/Shanghai');
//设置时区
二、获取当前Unix时间戳
time()
三、获取指定时间的Unix时间戳
mktime()
date_default_timezone_set('Asia/Shanghai');
//设置时区
$nowTime=time();$time1=mktime(0,0,0,10,1,2014);//取得一个日期的 Unix 时间戳
echo '距离2014年国庆还有'.(($time1-$nowTime)/60/60/24).'天';
四、从Unix时间戳取得时间日期信息
date()格式化一个本地时间/日期
第一个参数:必填,写上你所需要的时间日期的格式,把format 字符放在第一个参数里面会被转换成对应的信息,其他的字符还是原来的样子
date(‘Y-m-d G:i:s’)
自定义格式化Unix时间戳 为指定的时间格式!
五、获取Unix时间戳和微秒数
microtime() 返回当前 Unix 时间戳和微秒数
var_dump(microtime());
var_dump(microtime(true));
<?php
date_default_timezone_set('Asia/Shanghai');//设置时区
$startTime=microtime(true);
for ($i=0;$i<10000000;$i++){}
$endTime=microtime(true);
echo '该for循环花费了'.round(($endTime-$startTime),4).'秒';
?>
输出结果:
该for循环花费了0.104秒
PHP学习总结(正则表达式、日期与时间)相关推荐
- Excel学习笔记-函数(日期与时间、条件格式与公式、文本处理函数)
目录: 一.认识时间和日期 1.时间格式 2.基本的时间与日期运算 二.日期函数 1.Year.Month.Day.Date函数 2.Datedif函数 3.Weeknum.Weekday函数 4.T ...
- poco,c++库学习,日期和时间
POCO C++库学习和分析 -- 日期与时间 在Poco库中,与时间和日期相关的一些类,其内部实现是非常简单的.看相关文档时,比较有意思的倒是历史上的不同时间表示法. 1. 系统时间函数 ...
- mysql查询数据库日期_mysql如何查询日期与时间
前言: 在项目开发中,一些业务表字段经常使用日期和时间类型,而且后续还会牵涉到这类字段的查询.关于日期及时间的查询等各类需求也很多,本篇文章简单讲讲日期及时间字段的规范化查询方法. 1.日期和时间类型 ...
- mysql查询今日没有时间字段_关于日期及时间字段的查询
前言: 在项目开发中,一些业务表字段经常使用日期和时间类型,而且后续还会牵涉到这类字段的查询.关于日期及时间的查询等各类需求也很多,本篇文章简单讲讲日期及时间字段的规范化查询方法. 1.日期和时间类型 ...
- Python中的日期和时间
感觉C语言作为一门编程的入门语言还是很好的,相比较之下,Python为代表的一些语言,适合很多非计算机专业的编程入门学习. Python 日期和时间 Python 程序能用很多方式处理日期和时间,转换 ...
- 详解 Java 日期与时间
文章目录 一.时区 二.夏令时 三.旧 API 3.1. Date 3.2. SimpleDateFormat 3.3. Calendar 四.新 API 4.1. LocalDateTime 4.2 ...
- c语言 时间函数,C 日期和时间函数
学习C - C日期和时间函数 time.h标头声明产生时间和日期的函数. 获取时间值 返回时间值的最简单的函数具有以下原型: clock_t clock(void); 这个函数返回一些参考点后的处理器 ...
- mysql如何查询日期与时间
前言: 在项目开发中,一些业务表字段经常使用日期和时间类型,而且后续还会牵涉到这类字段的查询.关于日期及时间的查询等各类需求也很多,本篇文章简单讲讲日期及时间字段的规范化查询方法. 1.日期和时间类型 ...
- mysql 日期_「5」学习MySQL日期与时间类型发现:要养成注重细节的习惯
在前面的学习中我们提到过字段类型这个概念,本篇的主题就是来讲一种常用而相对复杂的类型:日期与时间. MySQL中表示日期与时间的数据类型有很多种,但主要的不外乎下面五种: 记住上面表中的"范 ...
最新文章
- [WorldWind学习]18.High-Performance Timer in C#
- springboot整合shiro+mybatis-plus
- 【ZOJ - 3872】Beauty of Array(思维,计算贡献,枚举)
- MQTT工作笔记0007---剩余长度
- MySQL复习(基本操作)
- linux虚拟机怎么恢复出厂设置_Vmware安装linux后一些初始化配置
- Qt学习之路之解决unable to find a qt build,to solve this problem specify a qt build
- linux shell脚本教程
- linux vi恢复文件怎么打开文件,Linux上vi编辑文件非正常退出后文件恢复
- [论文写作-词汇] 这么多特别,该用哪个?special especial specific particular peculiar exceptional extraordinary
- Linux修改文件保存时报错E45: 已设定选项 ‘readonly‘ (请加 ! 强制执行)
- 国际标准战争的技术真相
- centos mysql mariadb_centos7 mysql和mariadb的资料 - 菜鸟头头
- 男生必学,与女生聊天技巧
- IC China展商大唐展讯新潮华虹等2014电子信息百强榜上有名
- *ptr++、*++ptr、++*ptr和(*ptr)++
- 微信小程序实现长按复制和点击复制
- 大数据产业链包括哪几个环节,具体包含哪些内容
- AI技术领跑、23个国际冠军,2019百度AI如何彰显核心竞争力
- python操作目录_Python语言目录操作一
热门文章
- 华为vrrp默认优先级_华为的VRRP怎么配置
- 十三、前端基本功:DOM练习
- 八十五、Eureka搭建分布式SpringCloud项目
- 自然语言处理python进阶(二)
- 第五届“达观杯”自然语言处理文本分类竞赛开启报名,丰厚奖金等你来战!...
- 边界化难题终结者!将自监督学习应用到自动驾驶上 | CVPR 2021
- 如何搭建AIoT智能对话交互系统:技术解析和实操分享
- Python 和 C/C++ 拓展程序的性能优化
- 面向睡眠阶段分类的自适应时空图卷积神经网络
- 实录 | DSTC 8“基于Schema的对话状态追踪”竞赛冠军方案解读