正则函数和时间函数
模式修正符
i
在和模式进行匹配时不区分大小写
<?php
/*
模式修正符 : i
在和模式进行匹配时不区分大小写
*/
$pattern='/test/i';
$str=' test TEST Test TeSt ';
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);
?>
m
模式修正符 : m
多行匹配,如果目标字符串 中没有"\n"字符, 或者模式中没有出现^或$, 设置这个修饰符不产生任何影响
使用条件:
1)目标字符串中必须包含"\n"
在字符串中出现"\n"就表示新的一行开始
2)正则表达式中必须要出现^或者$
学前须知:
\r:回车符
\n:换行符
模式修正符m的作用
多行匹配
<?php
$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)
//在Linux操作系统中看到的换行(现象),就是通过\n来完成的
var_dump(preg_match_all($pattern,$str,$arr));
echo '<br />';
var_dump($arr);
?>
s
如果设定了此修正符,那么点号“ . ”将匹配所有的字符包括换行符(\n)
<?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);
?>
U
禁止贪婪匹配
<?php
/*
模式修正符 : U
禁止贪婪匹配
*/
$pattern='/a.*f/U';//等价于$pattern='/a.*?f/';
$str=' adwqdwqdwqdwqwf aveegregregef';
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);
//模式修正符是可以多个搭配使用的
$pattern='/a.*f/Ui';
$str=' Adwqdwqdwqdwqwf aveegregregef';
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);
?>
与正则表达式配合的函数
preg_match_all()
<?php
/*
preg_match_all()
第四个参数(可选):
PREG_PATTERN_ORDER //默认设置,以字符型式显示匹配字符
PREG_SET_ORDER // 对款号里匹配的内容进行
PREG_OFFSET_CAPTURE
第五个参数(可选):可以传一个值,来表示从目标字符串的哪个位置开始搜索(单位是字节)。
*/
$pattern='/t(.*?)(s)t/';
$str='adwdwqdqwdqwtest tdqwst test tvrgrgrst';
var_dump(preg_match_all($pattern, $str,$arr,PREG_OFFSET_CAPTURE));
var_dump($arr);
?>
PREG_SET_ORDER
PREG_OFFSET_CAPTURE
preg_match()
执行一个正则表达式匹配
参数说明:
第一个参数:正则表达式
第二个参数:目标字符串
第三个参数(可选):放一个变量,执行完成之后,里面会有匹配到的部分以及等等一些数据!
第四个参数(可选):可以传PREG_OFFSET_CAPTURE进入(那么第三个参数那个变量里面的数据就会有匹配到的部分的偏移值),默认传的是0
第五个参数(可选):可以传一个值,来表示从目标字符串的哪个位置开始搜索(单位是字节)。
<?php
$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 '没找到!';
}
//偏移13
preg_replace()
参数说明:
第一个参数:正则表达式
第二个参数:要替换成的字符串
第三个参数:目标字符串
第四个参数(可选):默认是-1,就是替换所有符合特征部分的!
第五个参数(可选):你可以放一个变量在这边
<?php
$pattern='/<div(.*?)>(.*?)<\/div>/';
$str1='<a$1 href="http://taobao.com">$2</a>'; //$1 $2 表示()里面的数据从前往后$1 为前面那个
$str='dwqdwq<div style="color:red;font-size:25px;">爱克发cqdwqdqw</div>dqwwdqdwq<div>我是后面那个div</div>';
if(preg_match($pattern, $str,$arr)){
echo '替换后的:'.preg_replace($pattern, $str1, $str,-1,$count);
var_dump($count);
}else{
echo '对不起,没有找到!';
}
echo '<br /><br /><br /><br />';
echo '原来的字符串:'.$str;
?>
数组替换
<?php
/*
preg_replace第一个参数与第二个参数传数组,一一对应的去替换!
*/
$pattern=array(
'/<div(.*?)>(.*?)<\/div>/',
'/<p(.*?)>(.*?)<\/p>/'
);
$str1=array(
'<a$1 href="http://sifangku.com">$2</a>',
'<span$1>我是span标签啦!$2</span>'
);
$str='dwqdwq<div style="color:red;font-size:25px;">测试成为绯闻绯闻绯闻绯dwqdwqdwq闻cqdwqdqw</div>dqwwdqdwq<p>我是后面那个div</p>';
echo '替换后的:'.preg_replace($pattern, $str1, $str,-1,$count);
var_dump($count);
echo '<br /><br /><br /><br />';
echo '原来的字符串:'.$str;
?>
时间函数
设置时区
date_default_timezone_set(‘Asia/Shanghai’);//设置时区
获取当前Unix时间戳
time()
获取指定时间的Unix时间戳
mktime(hour,minute,second,month,day,year)
$time1=mktime(21,4,0,5,1,2021) //2021年5月1日21时4分0秒
从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).'秒';