一、 PHP中的正则表达式
正则表达示我们其实之前经常看到,它主要用在以下一些地方:匹配邮箱、手机号码、验证码、替换敏感的关键词。
例如:涉及政治和骂人的话 PHP的正则表达示定界符的规定如下:
定界符,不能用a-zA-Z0-9\ 其他的都可以用。必须成对出现,有开始就有结束。
例子 | 说明 |
---|---|
/中间写正则/ | true |
$中间写正则 $ | true |
%中间写正则% | true |
^中间写正则 ^ | true |
@中间写正则@ | true |
(中间写正则) | false |
A中间写正则A | flase |
注:\ 是转义字符,如果在以后正则表达示里面需要匹配/,如下图:
/ / /
这个时候真要匹配/ 的时候,需要把定界符里面的/ 用转义字符转义一下,写成下面的例子:
/ / /
如果你觉得麻烦,遇到这种需要转义的字符的时候可以把两个正斜线(/ /)定界,改为其他的定界符(# #)。
正规表代式格式:
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'];
?>