php学习笔记(三)

一.正则表达式

1.理解正则表达式

语法规则
描述了一类字符串的特征,然后通过这个特征可以配合一些特定的函数,来完成对字符串更加复杂的一系列操作。正则表达式:普通字符和特殊字符组成的一个字符串。
定界符
一般习惯使用正斜线/作为定界的字符,前后一致
普通字符
比如:a-z,A-Z,0-9,双引号,单引号
它们没有特殊的含义。

2.元字符

元字符指的是在正则表达式中有特殊含义的字符。

\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    //匹配字符串的结束位置
|    //匹配两个或多个模式
[]    //匹配方括号中的任意一个字符
[^]    //匹配除方括号中字符以外的任意一个字符
()    //将括号中作为一个整体以便将其中的内容获取到,在我们的正则表达式中 可以使用圆括号来将某一段括起来,在圆括号的后面部分,我们可以使用\\数字 来代表圆括号部分所匹配到的内容!

3.模式修正符

模式修正符是在正则表达式的定界符之后使用的,可以调整正则表达式的解释,扩展正则表达式在匹配换等操作是的某些功能,增强正则表达式的处理能力。
常见模式修正符

i    //在和模式进行匹配时不区分大小写
m    //多行匹配,如果目标字符串 中没有"\n"字符, 或者模式中没有出现^或$, 设置这个修饰符不产生任何影响
s    //如果设定了此修正符,那么.将匹配所有的字符包括换行符
U    //禁止贪婪匹配

4.与正则表达式配合的函数

preg_match() 执行一个正则表达式匹配
preg_match_all() 执行一个全局正则表达式匹配
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,2019);//取得一个日期的 Unix 时间戳
    echo '距离2019年国庆还有'.(($time1-$nowTime)/60/60/24).'天';

从Unix时间戳取得时间日期信息

date()//格式化一个本地时间/日期,第一个参数:必填,写上你所需要的时间日期的格式,把format 字符放在第一个参数里面会被转换成对应的信息,其他的字符还是原来的样子
date('Y-m-d G:i:s')//自定义格式化Unix时间戳 为指定的时间格式!

获取Unix时间戳和微秒数

microtime() //返回当前 Unix 时间戳和微秒数

三.图像处理

1.创建图像的基本步骤

创建图像
所有的绘图设计都需要在一个图像上完成,以后的操作都将基于这个图像。

$img=imagecreatetruecolor(200,200);//新建一个长和高都为200像素的真彩色图像

绘制图像
图像创建完成后,就可以通过这个图像资源,使用各种图像函数设置图像的颜色、填充画布、画点、线段、各种几何图形以及向图像添加文本等。

$color=imagecolorallocate($img,50,50,50);//分配颜色
imagefill($img,0,0,$color);//区域填充

输出图像
header()函数:

header('Content-type:image/jpeg');//默认情况header('Content-type:text/html');

在该函数之前,不能输出任何内容。在我们的PHP代码 的函数里面,我们使用的/开头的路径,这个/不是指 web根目录,而是操作系统的文件的根目录。

imagejpeg($img);//以JPEG格式将图像输出到浏览器或文件

释放资源

imagedestroy($img);//销毁一图像

2.验证码

<?php
header('Content-type:image/jpeg');
$width=120;
$height=40;
$element=array('a','b','c','d','e','f','g','h','i','j','k','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
$string='';
for ($i=0;$i<5;$i++){
    $string.=$element[rand(0,count($element)-1)];
}
$img=imagecreatetruecolor($width, $height);//新建一个真彩色图像
$colorBg=imagecolorallocate($img,rand(200,255),rand(200,255),rand(200,255));//为一幅图像分配颜色
$colorBorder=imagecolorallocate($img,rand(200,255),rand(200,255),rand(200,255));//为一幅图像分配颜色
$colorString=imagecolorallocate($img,rand(10,100),rand(10,100),rand(10,100));//为一幅图像分配颜色
imagefill($img,0,0,$colorBg);//区域填充
imagerectangle($img,0,0,$width-1,$height-1,$colorBorder);//画一个矩形
for($i=0;$i<100;$i++){
    imagesetpixel($img,rand(0,$width-1),rand(0,$height-1),imagecolorallocate($img,rand(100,200),rand(100,200),rand(100,200)));//画一个单一像素
}
for($i=0;$i<3;$i++){
    imageline($img,rand(0,$width/2),rand(0,$height),rand($width/2,$width),rand(0,$height),imagecolorallocate($img,rand(100,200),rand(100,200),rand(100,200)));//画一条线段
}
//imagestring($img,5,0,0,'abcd',$colorString);//水平地画一行字符串
imagettftext($img,14,rand(-5,5),rand(5,15),rand(30,35),$colorString,'字体路径',$string);//用 TrueType 字体向图像写入文本
imagejpeg($img);//以JPEG格式将图像输出到浏览器或文件
imagedestroy($img);//销毁一图像
?>

3.水印

<?php 
header('Content-type:image/jpeg');
$img=imagecreatefromjpeg('images/zcx.jpg');//由文件或 URL 创建一个新图象
$waterMark=imagecreatefromgif('路径');//由文件或 URL 创建一个新图象
$color=imagecolorallocate($img,255,255,255);//为一幅图像分配颜色

$width=imagesx($img);//取得图像宽度
$height=imagesy($img);//取得图像高度

$waterMarkWidth=imagesx($waterMark);
$waterMarkHeight=imagesy($waterMark);

$position=imagettfbbox(20,0,'字体路径','水印');//给出一个使用 FreeType 2 字体的文本框
$stringWidth=$position[2]-$position[0];
//文字水印
//imagettftext($img,20,0,$width-1-$stringWidth-($width/30),$height-1-($height/30), $color,'font/china1.TTF','水印');//使用 FreeType 2 字体将文本写入图像

/*
imagecopymerge($img,$waterMark,100,100,0,0,$waterMarkWidth,$waterMarkHeight,0);//拷贝并合并图像的一部分
参数说明:
$img:目标图像资源
$waterMark:水印的图像资源
100:所要拷贝到目标图像资源上面的坐标(x轴位置)
100:所要拷贝到目标图像资源上面的坐标(y轴位置)
0:从水印的图像资源的x坐标为0的位置开始拷贝
0:从水印的图像资源的y坐标为0的位置开始拷贝
$waterMarkWidth:所要拷贝的水印图像的长度
$waterMarkHeight:所要拷贝的水印图像的高度
0:表示透明度,数值越小就越透明,最大值100相当于和imagecopy这个函数一样

*/

imagecopymerge($img,$waterMark,$width-1-$waterMarkWidth,$height-1-$waterMarkHeight,0,0,$waterMarkWidth,$waterMarkHeight,30);//拷贝并合并图像的一部分

imagejpeg($img);//以JPEG格式将图像输出到浏览器或文件
imagedestroy($img);//销毁图像
?>

4.缩放与裁剪

<?php
/*
等比例缩放
*/
header('Content-type:image/jpeg');
$width=300;
$img=imagecreatefromjpeg('路径'); //由文件或 URL 创建一个新图象
$imgWidth=imagesx($img);
$imgHeight=imagesy($img);
$height=$width/($imgWidth/$imgHeight);
$img1=imagecreatetruecolor($width,$height);
/*
imagecopyresampled($dst_image, $src_image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h)//重采样拷贝部分图像并调整大小
参数说明:
$dst_image:目标图像资源
$src_image:源图像资源(你要采样的那个图像资源)
$dst_x:
$dst_y:与上面的$dst_x确定了一个坐标,把采样到的部分 放到目标图像资源的什么位置
$src_x:
$src_y:与上面的$src_y确定了一个坐标,你要采样的原图像资源的 某个部分的起始坐标
$dst_w:
$dst_h:与上面的$dst_w确定了 放到目标图像资源上面的尺寸
$src_w:
$src_h:与上面的$src_w确定了 采样原图像资源的 某个部分
*/
imagecopyresampled($img1,$img,0,0,0,0,$width,$height,$imgWidth,$imgHeight);
//裁剪
//imagecopyresampled($img1,$img,0,0,0,0,100,100,100,100);
if(imagejpeg($img1)){
    imagejpeg($img1,路径');
}
imagedestroy($img);
imagedestroy($img1);
?>

更多图像处理相关函数

四.文件与目录操作

判断普通文件和目录

is_file()//判断给定文件名是否为一个正常的文件
is_dir()//判断给定文件名是否是一个目录

文件的属性

file_exists()//检查文件或目录是否存在
filesize()//取得普通文件大小
is_readable()//判断给定文件名是否可读
is_writable()//判断给定的文件名是否可写
filectime()//获取文件的创建时间
filemtime()//获取文件的修改时间
fileatime()//取得文件的上次访问时间
stat()//获取文件大部分属性值

1.目录的基本操作

1.basename()//返回路径中的文件名部分
2.dirname()//返回路径中的目录部分
3.pathinfo()//返回文件路径的信息
4.opendir()//打开目录句柄
5.readdir()//从目录句柄中读取条目,返回目录中下一个文件的文件名
6.rewinddir()//倒回目录句柄
7.closedir()//关闭目录句柄
8.mkdir()//新建目录
9.rmdir()//删除指定的空目录
10.scandir()//列出指定路径中的文件和目录

2.文件的基本操作

1.fopen()//打开文件或者 URL
2.fread()//读取文件
3.fgets()//从文件指针中读取一行
4.feof()//测试文件指针是否到了文件结束的位置
5.fwrite()//写入文件
6.rewind()//倒回文件指针的位置
7.flock()//轻便的咨询文件锁定
8.ftruncate()//将文件截断到给定的长度
9.fclose()//关闭一个已打开的文件指针
10.file() //把整个文件读入一个数组中
11.copy()//拷贝文件
12.unlink()//删除文件
13.file_get_contents()//将整个文件读入一个字符串
14.file_put_contents()//将字符串写入文件中
15.rename()//重命名一个文件或目录
16.readfile()//读入一个文件并写入到输出缓冲

3.文件上传

文件的上传的过程这些细节我们是不需要管的,都是自动的,上传的文件默认是放在一个临时的目录里面的,我们要做的就是把这些临时目录里面的文件移动到我们需要的地方就可以了。

4.文件下载

<?php
if(!function_exists('finfo_open')){
    header('Content-type:text/html;charset=utf-8');
    exit('请先开启PHP扩展:fileinfo!');
}
$file='a.rar';
$fileinfo=finfo_open(FILEINFO_MIME_TYPE);
$mimeType=finfo_file($fileinfo,$file);
finfo_close($fileinfo);
//发送指定的文件MIME类型的头信息
header('Content-type:'.$mimeType);
//指定下载文件的描述
header('Content-Disposition:attachment;filename='.basename($file));
//指定文件的大小
header('Content-Length:'.filesize($file));
//读取文件内容至输出缓冲区,返回这个文件
readfile($file);
?>

  Reprint please specify: clam php学习笔记(三)

 Previous
html+css+php+cookie+mysql制作一个简易的登陆网页 html+css+php+cookie+mysql制作一个简易的登陆网页
一味的学习未免有些枯燥无味,偶尔有个任务检验一下学习成果还是很有必要的 一.环境准备一切开始的基本 1.打开phpstudy 2.找到网站根目录,把文件放在WWW文件下这里我新建了一个login文件夹来存放,其中包括以下几个文件:login
2019-04-28 yxld
Next 
php学习笔记(二) php学习笔记(二)
一.函数函数(function)是一段完成特定功能的已命名代码块。函数可以遵照参数完成特定的任务,并且可能返回一个值。 1.自定义函数函数的定义function 函数名称(参数1 ,参数2=默认值 ,…){ 程序内容叙述(也叫函数体);
2019-04-17 yxld
  TOC