6.PHP(下)

一、 PHP中的正则表达式


正则表达示我们其实之前经常看到,它主要用在以下一些地方:匹配邮箱、手机号码、验证码、替换敏感的关键词。

例如:涉及政治和骂人的话 PHP的正则表达示定界符的规定如下:
定界符,不能用a-zA-Z0-9\ 其他的都可以用。必须成对出现,有开始就有结束。
例子说明
/中间写正则/true
$中间写正则 $true
%中间写正则%true
^中间写正则 ^true
@中间写正则@true
(中间写正则)false
A中间写正则Aflase

注:\ 是转义字符,如果在以后正则表达示里面需要匹配/,如下图:

/ / /

这个时候真要匹配/ 的时候,需要把定界符里面的/ 用转义字符转义一下,写成下面的例子:

/ / /

如果你觉得麻烦,遇到这种需要转义的字符的时候可以把两个正斜线(/ /)定界,改为其他的定界符(# #)。

正规表代式格式:

int preg_match ( 正 则 , 正则, ,字符串,$结果)

功能:根据$ 正则变量,匹配$ 字符串变量。如果存在则返回匹配的个数,把匹配到的结果放到$结果变量里。如果没有匹配到结果返回0。

<?php
$zz = '/wq/';

$string = 'ssssswqaaaaaa';

if(preg_match($zz, $string, $matches)){
   echo '匹配到了,结果为:';
   var_dump($matches);
}else{
   echo '没有匹配到';
}
?>

我们常用的正则函数有:
函数名功能
preg_filter执行一个正则表达式搜索和替换
preg_grep返回匹配模式的数组条目
preg_match执行一个正则表达式匹配
preg_match_all执行一个全局正则表达式匹配
preg_replace_callback_array传入数组,执行一个正则表达式搜索和替换使用回调
preg_replace_callback执行一个正则表达式搜索并且使用一个回调进行替换
preg_replace执行一个正则表达式的搜索和替换
preg_split通过一个正则表达式分隔字符串




二、 系统文件

readfile()


读取文件,readfile("路径")
假设我们要读取c盘下的“test.txt”

在这里插入图片描述

<?php
//linux类的读取方式
//readfile("home/paul/test.txt");
//windows类是读取方式
readfile("c:\\test.txt");    //注意必须是两个反斜杠
?>

运行以上代码后:
在这里插入图片描述



读取到的内容和记事本的内容一样,但是注意读取的内容不会自动换行

在这里插入图片描述



file_get_contents()、fgetc()、fgets()


打开文件,file_get_contens("路径"),fgetc("已打开的文件")、fgets(“已打开的文件”)

file_get_contents()

<?php
	echo file_get_contents("1.txt");    
?>

在这里插入图片描述


fgetc()、fgets()

<?php
$file = fopen("1.txt","r") or exit("Unable ro open file!");     //	or exit ()打不开文件返回vUnable ro open file!
echo "The following read on file 1.txt"."<br>";
while(!feof($file)){                     //feof()检测是否已到达文件末尾
	 echo fgets($file)."<br>";             //fgets()从文件中逐行读取文件,fgetc)(从文件中逐字读取文件
}
var_dump($file)     //显示文件的类型
fclose($file);                          //fclose()关闭文件
?>

这是1.txt里面的内容
在这里插入图片描述
运行代码后:

在这里插入图片描述
文件可以通过下列模式打开:

在这里插入图片描述



file_put_contents()


写入内容,file_put_contents("路径","内容")

在这里插入图片描述
记事本里面没有任何内容,运行代码后

<?php
$wirte_file=file_put_contents("1.txt","hello world");
if($wirte_file){
	echo "Write succeeded"."<br>";
	echo file_get_contents("1.txt");    //读取文件
}             
?>

在这里插入图片描述
在这里插入图片描述

fwirte()


已打开的文件,才能写入,fwirte("已打开的文件","内容")
``` <?php $file=fopen("1.txt","w"); fwrite($file,"hello world1"); fclose($file); ?> ``` ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200905174212162.png#pic_center)

rename()


重命名文件,rename("旧文件名","新文件名")

在这里插入图片描述
修改1.txt的文件名

<?php
rename("1.txt","2.html"); 
?>

在这里插入图片描述
文件夹中原本的1.txt不见了,变成了2.html,同时rename也可以修改文件后辍

<?php
$filename = "2.html";
$filename2 = $filename . ".bat";
rename("1.txt","2.html");
?>

在这里插入图片描述

copy()


复制文件,copy("源文件",”目标文件“)
<?php
$filename = "1.txt";
$filename2 = "new.txt";
copy($filename,$filename2);
?>

在这里插入图片描述

unlink()


删除文件,unlink(“路径”)
<?php
$filename = "1.txt";
if(unlink($filename)){
	echo "deldtion succeeded";
}
else{
	echo "deletion fail";
}
?>

在这里插入图片描述
原本的1.txt被成功删除

在这里插入图片描述


file_exists()


检测文件是否存在,file_exists("路径")
假设安装网址是:install.php,安装锁定文件是install.lock,如果安装完没有删除或重命名,被扫到了重新安装,那数据库里面的文件就会丢失

在这里插入图片描述

<?php
$filename = "install.lock";
if(file_exists($filename)){
	echo "Installed, do not repeat installation";
	exit;
}
?>

运行后:

在这里插入图片描述




其他常用文件属性函数

在这里插入图片描述

PHP目录处理


处理文件夹的基本思想如下:
1.读取某个路径的时候判断是否是文件夹
2.是文件夹的话,打开指定文件夹,返回文件目录的资源变量
3.使用readdir读取一次目录中的文件,目录指针向后偏移一次
4.使用readdir读取到最后,没有可读的文件返回false
5.关闭文件目录

我们来学习一比常用函数:

在这里插入图片描述

假设我们要获取e盘文件的目录,代码如下:

<?php
//设置打开的目录是e盘
$dir = "e:/";
//判断是否是文件夹
if(is_dir($dir)){
	if($dh = opendir($dir)){
	//读取到最后返回false,停止循环
		while(($file=readdir($dh)) !== false){
			echo "file_name:$file:file_type:".filetype($dir.$file)."<br>";
			
		}
	}
	closedir($dh); 
}

?>

看一下我们e盘的文件:

在这里插入图片描述

运行后:

在这里插入图片描述

PHP文件权限设置

<?php
//修改linux  系统/var/wwwroot/某文件权限为755
chmod("/var/wwwroot/index.html", 755);  
chmod("/var/wwwroot/index.html", "u+rwx,go+rx"); 
chmod("/somedir/somefile", 0755); 
?>

windows下的权限设置需调用系统函数cacls实现

在这里插入图片描述


PHP文件路径函数


我们经常会遇到处理文件路径的情况。
例如:
1.文件后缀需要取出来
2.路径需要取出名字不取目录
3.只需要取出路径名中的目录路径
4.或者把网址中的各个部份进行解析取得独立值
5.甚至是自己组成一个url出来
... ....

常用的路径处理函数:

在这里插入图片描述




文件上传


通过 PHP,可以把文件上传到服务器

在这里插入图片描述

创建用户界面文件上传表单:user.html

<html>
<head>
<meta charset="utf-8">
<title>This is a title</title>
</head>
<body>

<form action="upload_file.php" method="post" enctype="multipart/form-data">  //<form> 标签的 enctype 属性规定了在提交表单时要使用哪种内容类型。在表单需要二进制数据时,比如文件内容,请使用 "multipart/form-data"。
    <label for="file">文件名:</label>
    <input type="file" name="file" id="file"><br>  //<input> 标签的 type="file" 属性规定了应该把输入作为文件来处理。举例来说,当在浏览器中预览时,会看到输入框旁边有一个浏览按钮。
    <input type="submit" name="submit" value="提交">
</form>

</body>
</html>

在这里插入图片描述
创建上传脚本:upload_file


通过使用 PHP 的全局数组 $_FILES,你可以从客户计算机向远程服务器上传文件。

第一个参数是表单的 input name,第二个下标可以是 “name”、“type”、“size”、“tmp_name” 或 “error”。如下所示:

$_FILES[“file”][“name”] - 上传文件的名称
$_FILES[“file”][“type”] - 上传文件的类型
$_FILES[“file”][“size”] - 上传文件的大小,以字节计
$_FILES[“file”][“tmp_name”] - 存储在服务器的文件的临时副本的名称
$_FILES[“file”][“error”] - 由文件上传导致的错误代码
这是一种非常简单文件上传方式。基于安全方面的考虑,您应当增加有关允许哪些用户上传文件的限制。



<?php
// 允许上传的图片后缀
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);        // 获取文件后缀名
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 204800)    // 小于 200 kb
&& in_array($extension, $allowedExts))
{

if ($_FILES["file"]["error"] > 0){
	echo "error:" . $_FILES["file"]["error"] . "<br>";
}
else{
	echo "file name:" . $_FILES["file"]["name"]."<br>";
	echo "file type:" . $_FILES["file"]["type"]."<br>";
	echo "file size:" . ($_FILES["file"]["size"]/1024)."KB<br>";
	echo "file location:" . $_FILES["file"]["tmp_name"]."<br>";
}
// 判断当前目录下的 upload 目录是否存在该文件
        // 如果没有 upload 目录,你需要创建它,upload 目录权限为 777
        if (file_exists("upload/" . $_FILES["file"]["name"]))
        {
            echo $_FILES["file"]["name"] . " 文件已经存在。 ";
        }
        else
        {
            // 如果 upload 目录不存在该文件则将文件上传到 upload 目录下
            move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);
            echo "文件存储在: " . "upload/" . $_FILES["file"]["name"];
        }
}else{
	echo "illegal file format";
}
?>

提交后:
在这里插入图片描述




三、cookie


cookie 常用于识别用户。cookie 是一种服务器留在用户计算机上的小文件。每当同一台计算机通过浏览器请求页面时,这台计算机将会发送 cookie。通过 PHP,您能够创建并取回 cookie 的值。
setcookie() 函数用于设置 cookie。

注释:setcookie() 函数必须位于 标签之前。

<?php
setcookie("admin","2020090500", time()+5);    //创建一个名为:admin,值为:2020090500,过期时间位5s的cookie,过期时间被设置为一个月(60 秒 * 60 分 * 24 小时 * 30 天)
?>

<?php
if (isset($_COOKIE["admin"]))    //isset()检查变量是否设置,并且非NULL
    echo "欢迎 " . $_COOKIE["admin"] . "!<br>";       打印cooke值
else
    echo "普通访客!<br>";
?>

带cookie进入网站:
在这里插入图片描述
5s后:
在这里插入图片描述

如何删除 Cookie?


当删除 cookie 时,您应当使过期日期变更为过去的时间点。
<?php
// 设置 cookie 过期时间为过去 1 小时
setcookie("user", "", time()-3600);
?>




PHP Session


PHP session 变量用于存储关于用户会话(session)的信息,或者更改用户会话(session)的设置。Session 变量存储单一用户的信息,并且对于应用程序中的所有页面都是可用的。
<?php
session_start();
if(isset($_SESSION['views']))
{
    $_SESSION['views']=$_SESSION['views']+1;
}
else
{
    $_SESSION['views']=1;
}
echo "浏览量:". $_SESSION['views'];
?>

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值