php之路3

模式修正符

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).'秒';

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值