正则表达式

一、理解正则表达式

描述了一类字符串的特征,然后通过这个特征可以配合一些特定的函数,来完成对字符串更加复杂的一系列操作! 普通字符和特殊字符组成的一个字符串

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学习总结(正则表达式、日期与时间)相关推荐

  1. Excel学习笔记-函数(日期与时间、条件格式与公式、文本处理函数)

    目录: 一.认识时间和日期 1.时间格式 2.基本的时间与日期运算 二.日期函数 1.Year.Month.Day.Date函数 2.Datedif函数 3.Weeknum.Weekday函数 4.T ...

  2. poco,c++库学习,日期和时间

     POCO C++库学习和分析 -- 日期与时间 在Poco库中,与时间和日期相关的一些类,其内部实现是非常简单的.看相关文档时,比较有意思的倒是历史上的不同时间表示法. 1. 系统时间函数    ...

  3. mysql查询数据库日期_mysql如何查询日期与时间

    前言: 在项目开发中,一些业务表字段经常使用日期和时间类型,而且后续还会牵涉到这类字段的查询.关于日期及时间的查询等各类需求也很多,本篇文章简单讲讲日期及时间字段的规范化查询方法. 1.日期和时间类型 ...

  4. mysql查询今日没有时间字段_关于日期及时间字段的查询

    前言: 在项目开发中,一些业务表字段经常使用日期和时间类型,而且后续还会牵涉到这类字段的查询.关于日期及时间的查询等各类需求也很多,本篇文章简单讲讲日期及时间字段的规范化查询方法. 1.日期和时间类型 ...

  5. Python中的日期和时间

    感觉C语言作为一门编程的入门语言还是很好的,相比较之下,Python为代表的一些语言,适合很多非计算机专业的编程入门学习. Python 日期和时间 Python 程序能用很多方式处理日期和时间,转换 ...

  6. 详解 Java 日期与时间

    文章目录 一.时区 二.夏令时 三.旧 API 3.1. Date 3.2. SimpleDateFormat 3.3. Calendar 四.新 API 4.1. LocalDateTime 4.2 ...

  7. c语言 时间函数,C 日期和时间函数

    学习C - C日期和时间函数 time.h标头声明产生时间和日期的函数. 获取时间值 返回时间值的最简单的函数具有以下原型: clock_t clock(void); 这个函数返回一些参考点后的处理器 ...

  8. mysql如何查询日期与时间

    前言: 在项目开发中,一些业务表字段经常使用日期和时间类型,而且后续还会牵涉到这类字段的查询.关于日期及时间的查询等各类需求也很多,本篇文章简单讲讲日期及时间字段的规范化查询方法. 1.日期和时间类型 ...

  9. mysql 日期_「5」学习MySQL日期与时间类型发现:要养成注重细节的习惯

    在前面的学习中我们提到过字段类型这个概念,本篇的主题就是来讲一种常用而相对复杂的类型:日期与时间. MySQL中表示日期与时间的数据类型有很多种,但主要的不外乎下面五种: 记住上面表中的"范 ...

最新文章

  1. [WorldWind学习]18.High-Performance Timer in C#
  2. springboot整合shiro+mybatis-plus
  3. 【ZOJ - 3872】Beauty of Array(思维,计算贡献,枚举)
  4. MQTT工作笔记0007---剩余长度
  5. MySQL复习(基本操作)
  6. linux虚拟机怎么恢复出厂设置_Vmware安装linux后一些初始化配置
  7. Qt学习之路之解决unable to find a qt build,to solve this problem specify a qt build
  8. linux shell脚本教程
  9. linux vi恢复文件怎么打开文件,Linux上vi编辑文件非正常退出后文件恢复
  10. [论文写作-词汇] 这么多特别,该用哪个?special especial specific particular peculiar exceptional extraordinary
  11. Linux修改文件保存时报错E45: 已设定选项 ‘readonly‘ (请加 ! 强制执行)
  12. 国际标准战争的技术真相
  13. centos mysql mariadb_centos7 mysql和mariadb的资料 - 菜鸟头头
  14. 男生必学,与女生聊天技巧
  15. IC China展商大唐展讯新潮华虹等2014电子信息百强榜上有名
  16. *ptr++、*++ptr、++*ptr和(*ptr)++
  17. 微信小程序实现长按复制和点击复制
  18. 大数据产业链包括哪几个环节,具体包含哪些内容
  19. AI技术领跑、23个国际冠军,2019百度AI如何彰显核心竞争力
  20. python操作目录_Python语言目录操作一

热门文章

  1. 华为vrrp默认优先级_华为的VRRP怎么配置
  2. 十三、前端基本功:DOM练习
  3. 八十五、Eureka搭建分布式SpringCloud项目
  4. 自然语言处理python进阶(二)
  5. 第五届“达观杯”自然语言处理文本分类竞赛开启报名,丰厚奖金等你来战!...
  6. 边界化难题终结者!将自监督学习应用到自动驾驶上 | CVPR 2021
  7. 如何搭建AIoT智能对话交互系统:技术解析和实操分享
  8. Python 和 C/C++ 拓展程序的性能优化
  9. 面向睡眠阶段分类的自适应时空图卷积神经网络
  10. 实录 | DSTC 8“基于Schema的对话状态追踪”竞赛冠军方案解读