php中删除文件用unlink函数权限判断

 更新时间:2016年11月25日 17:27  点击:1570
unlink函数在php中就是删除文件的,但我们可以通过判断文件是否有删除权限,下面我来给大家简单介绍一下unlink函数用法与权限判断。

unlink($file)

例1

 代码如下 复制代码

<?php
unlink($somefile)
 or die("Cannot delete file.")
?>

有时会出现权限问题,对文件有写权限,但是无法删除。

原因很简单,删除文件不是对文件的修改,而是修改目录,需要对文件所在目录有写权

 判断文件是否具备读权限应用的是is_readable()函数,判断文件是否具备写权限应用的是is_writable()函数。is_readable()函数,判断指定文件是否可读,语法如下:
  bool is_readable(string filename)
  如果文件存在并且可读则返回TRUE。
  is_writable()函数,判断指定文件是否可写,语法如下:
  bool is_writable(string filename)
  如果文件存在并且可写则返回TRUE。参数filename可以是一个允许进行是否可写检查的目录名。
注意:PHP也许只能以运行webserver的用户名(通常为'nobody')来访问文件。不计入安全模式的限制。对文件权限的判断,是对文件进行操作的前提,特别是在执行文件的读取、写入、重命名等操作时,如果文件不具备备读、写的权限,那么这些操作是没有任何意义的。
设计过程
  (1)创建index.php文件。
  (2)添加表单,设置文本框,提交指定文件,设置文件域,提交写入文件中的数据,设置提交按钮,使用POST方法,将数据提交到本页。
  (3)通过$_POST[]方法获取表单提交的文件路径和文件内容,并通过iconv()函数对获取的数据进行编码转换。首先,判断指定的文件是否存在。然后,判断指定的文件是否具备写的权限,如果具备,则将表单提交的文件内容写入到文件中。最后,关闭打开的文件,给出提示信息。index.php的关键代码如下:

 代码如下 复制代码
  <?php
       if($_POST['file_name']!=""&& is_file(iconv("utf-8","gb2312",$_POST['file_name']))==true){   //判断文件是否存在
               $file_name=iconv("utf-8","gb2312",$_POST['file_name']);                             //编码转换
               if(file_exists($file_name)){
               if(is_writable($file_name)){        //判断文件是否具备写的权限
                     $fp=fopen($file_name,"w+");                  //打开指定的文件
                     if(fwrite($fp,$file_content)){                       //执行写入的操作
                          echo"<script>alert('文件写入成功!');</script>";
                     }else{
                          echo"<script>alert('文件写入失败!');</script>";
                     }
                     fclose($fp);                            //关闭文件
                 }else if(is_readable($file_name)){          //判断文件是否具备读的权限
                      echo"<script>alert('文件只具备读权限!');</script>";
                 }else{
                          echo"<script>alert('文件不具备读、写权限!');</script>";
                     }
                 }else{
                      echo"<script>alert('文件不存在!');</script>";
                 }
             }else{
                   echo"<script>alert('请输入正确的文件路径!');</script>";
             }
         ?>
在php中获取时间日期我们可以使用date函数,如果获取毫秒可以使用time但不能具体分出来,下面我来介绍一些php获取当前时间毫秒的实例。

php本身没有提供返回毫秒数的函数,但提供了一个microtime()函数,该函数返回一个array,包含两个元素,一个是秒数,一个是小数表示的毫秒数,借助此函数,可以很容易定义一个返回毫秒数的函数,例如:

 代码如下 复制代码

function getMillisecond() {
    list($s1, $s2) = explode(' ', microtime());
    return (float)sprintf('%.0f', (floatval($s1) + floatval($s2)) * 1000);
}

需要注意,在32位系统中php的int最大值远远小于毫秒数,所以不能使用int类型,而php中没有long类型,所以只好使用浮点数来表示。由于使用了浮点数,如果精度设置不对,使用echo显示获取的结果时可能会不正确,要想看到输出正确的结果,精度设置不能低于13位。

 代码如下 复制代码
        /*
         * microsecond 微秒     millisecond 毫秒
         *返回时间戳的毫秒数部分
         */
        function get_millisecond()
        {
                list($usec, $sec) = explode(" ", microtime());
                $msec=round($usec*1000);
                return $msec;
                
        }
        
        /*
         *
         *返回字符串的毫秒数时间戳
         */
        function get_total_millisecond()
        {
                $time = explode (" ", microtime () );
                $time = $time [1] . ($time [0] * 1000);
                $time2 = explode ( ".", $time );
                $time = $time2 [0];
                return $time;
        }
   
        /*
         *
         *返回当前 Unix 时间戳和微秒数(用秒的小数表示)浮点数表示,常用来计算代码段执行时间
         */
        
        function microtime_float()
        {
            list($usec, $sec) = explode(" ", microtime());
            return ((float)$usec + (float)$sec);
        }

需要注意,在32位系统中php的int最大值远远小于毫秒数,所以不能使用int类型,而php中没有long类型,所以只好使用浮点数来表示。

本文章来给大家列举一些常用的php 正则提取文章中的图片,并替换、移动图片目录代码,希望此文章对大家会有所帮助。

上传图片时,上传的图片并没有全部用到,那么可以设置上传时只存到临时文件夹里面,文章发布的时候把真正用到的图片移动到有用的目录里,这样定期清理无用目录就可以了。

 

 代码如下 复制代码
//转移临时文件夹中的图片
    $imgssss = preg_match_all("/linshi/[^s'"]+.jpg|png|gif|jpeg{1}/ui",$content,$imgss);
    $i=1;
    foreach($imgss as $aimg){
    if(is_string($aimg)){
    if (file_exists($aimg)){
    $newdir = "upload/".date("ymdhis")."/";
    if (!file_exists($newdir)){
    mkdir($newdir,0755,true);
    }
    $newname = $newdir.date("ymdhis").$i.".".pathinfo($aimg,PATHINFO_EXTENSION);
    rename($aimg,$newname);
    $content = str_replace($aimg,$newname, $content);
    }
    $i++;
    }elseif(is_array($aimg)){
    foreach($aimg as $imga){
    if (file_exists($imga)){
    $newdir = "upload/".date("ymdhis")."/";
    if (!file_exists($newdir)){
    mkdir($newdir,0755,true);
    }
    $newname = $newdir.date("ymdhis").$i.".".pathinfo($imga,PATHINFO_EXTENSION);
    rename($imga,$newname);
    $content = str_replace($imga,$newname, $content);
    }
    $i++;
    }
    }
    }

如果只是移动单张图片比较简单:

 代码如下 复制代码

$newdir = "upload/".date("ymdhis")."/";
if (!file_exists($newdir)){
mkdir($newdir,0755,true);
}
$newname = $newdir."s_".date("ymdhis").".".pathinfo($upimgurl,PATHINFO_EXTENSION);
rename($upimgurl,$newname);

在php中数组是一种很特殊的数组类型可以存储各种类型的数据,下面我来介绍对数组读取与删除指定数组元素的一些实例。

array:数组

offset: 规定取出元素的开始位置。如果是正数,则从前往后开始取,如果是负值,从后向前取 offset 绝对值。

一、PHP取索引数组的第一个

取索引数组的第一个元素非常容易,下标写0即可,不多解释。


重点和大家分享PHP取关联数组第一个的方法。先放上我今天写的代码:

 

 代码如下 复制代码
//取默认第一个渠道名
$channel_arr = $this->get_from_channel();  //所有渠道数组
$arr_num = count($channel_arr);
$first_channel = array_slice($channel_arr,0,-($arr_num-1));  //取渠道数组第一个
$html['from_channel'] = $first_channel[0];


删除数组

 代码如下 复制代码

 
<?php
$a=array(0=>"Dog",1=>"Cat",2=>"Horse",3=>"Bird");
print_r(array_slice($a,1,2));
?>

输出

Array ( [0] => Cat [1] => Horse )

还有array_shift() 函数删除数组中的第一个元素,并返回被删除元素的值.

相对的array_pop() 函数删除数组中的最后一个元素.

几个函数用下来觉得array_search()比较实用

array_search() 函数与 in_array() 一样,在数组中查找一个键值。如果找到了该值,匹配元素的键名会被返回。如果没找到,则返回 false

 代码如下 复制代码


$array = array('1', '2', '3', '4', '5');

$del_value = 3;
unset($array[array_search($del_value , $array)]);//利用unset删除这个元素

print_r($array);

输出

array('1', '2', '4', '5');

PHP中删除数组中某个元素

在PHP中删除数组元素有以下几种方法:
要删除一个元素,用onset()

 代码如下 复制代码

unset($array[3]);
unset($array['foo']);

要删除多个不连续的元素,也用unset()

 代码如下 复制代码

unset($array[3] $array[5]);
unset($array['foo'] $array['bar']);

要删除多个连续的元素,用array_splice()

 代码如下 复制代码

array_splice($array $offset $length);

判断数组元素位置我们可以使用array_keys函数与foreach对比来实现,下面小编来给大家介绍介绍具体的实现实例。

array_keys的语法如下:

array_keys(array,value,[strict])

其中strict设置为true将触发数据类型校验的严格匹配模式,默认为false,下边的代码展示了array_keys的一个简单应用。

 代码如下 复制代码


<?php
$test=array(10,20,30,"10","20","30");
print_r(array_keys($test,"10",true));//严格匹配模式
//输出:
//Array ( [0] => 3)
?>

当然我们还可以使用foreach 加判断了

 代码如下 复制代码

$one = array(1, 2, 3, 4);

$two = array("test1" =>array('name'=>"tank","phone"=>12412433),
 "test2"&nbsp; => array('name'=>"ying","phone"=>252523523),
 "test3" => array('name'=>"zhang","phone"=>656452345),);

foreach ($one as $k=>$v) {
 echo "key=".$k."&amp;value=".$v."&lt;br>";
}
$i=0;
foreach ($two as $k=>$v) {

 foreach($v as $value){
  if( $v='tank' )
        {
           echo $i;
         }
          $i++;
 }
}

后面这个是利用遍历数组然后加一值的对比就可以判断出来了。

[!--infotagslink--]

相关文章

  • php读取zip文件(删除文件,提取文件,增加文件)实例

    下面小编来给大家演示几个php操作zip文件的实例,我们可以读取zip包中指定文件与删除zip包中指定文件,下面来给大这介绍一下。 从zip压缩文件中提取文件 代...2016-11-25
  • php正确禁用eval函数与误区介绍

    eval函数在php中是一个函数并不是系统组件函数,我们在php.ini中的disable_functions是无法禁止它的,因这他不是一个php_function哦。 eval()针对php安全来说具有很...2016-11-25
  • php中eval()函数操作数组的方法

    在php中eval是一个函数并且不能直接禁用了,但eval函数又相当的危险了经常会出现一些问题了,今天我们就一起来看看eval函数对数组的操作 例子, <?php $data="array...2016-11-25
  • Python astype(np.float)函数使用方法解析

    这篇文章主要介绍了Python astype(np.float)函数使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-08
  • Jupyter Notebook读取csv文件出现的问题及解决

    这篇文章主要介绍了JupyterNotebook读取csv文件出现的问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2023-01-06
  • Python中的imread()函数用法说明

    这篇文章主要介绍了Python中的imread()函数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
  • C# 中如何取绝对值函数

    本文主要介绍了C# 中取绝对值的函数。具有很好的参考价值。下面跟着小编一起来看下吧...2020-06-25
  • C#学习笔记- 随机函数Random()的用法详解

    下面小编就为大家带来一篇C#学习笔记- 随机函数Random()的用法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • Photoshop打开PSD文件空白怎么解决

    有时我们接受或下载到的PSD文件打开是空白的,那么我们要如何来解决这个 问题了,下面一聚教程小伙伴就为各位介绍Photoshop打开PSD文件空白解决办法。 1、如我们打开...2016-09-14
  • C#操作本地文件及保存文件到数据库的基本方法总结

    C#使用System.IO中的文件操作方法在Windows系统中处理本地文件相当顺手,这里我们还总结了在Oracle中保存文件的方法,嗯,接下来就来看看整理的C#操作本地文件及保存文件到数据库的基本方法总结...2020-06-25
  • 解决python 使用openpyxl读写大文件的坑

    这篇文章主要介绍了解决python 使用openpyxl读写大文件的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-13
  • C#实现HTTP下载文件的方法

    这篇文章主要介绍了C#实现HTTP下载文件的方法,包括了HTTP通信的创建、本地文件的写入等,非常具有实用价值,需要的朋友可以参考下...2020-06-25
  • SpringBoot实现excel文件生成和下载

    这篇文章主要为大家详细介绍了SpringBoot实现excel文件生成和下载,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-09
  • 删除条目时弹出的确认对话框

    复制代码 代码如下: <td> <a href="/member/life/edit_ppt/<?php echo $v->id;?>" class="btn">编辑</a> <a href="javascript:;" onclick="if(confirm('您确定删除这条记录?')){location.href='/member/life/d...2014-06-07
  • php无刷新利用iframe实现页面无刷新上传文件(1/2)

    利用form表单的target属性和iframe 一、上传文件的一个php教程方法。 该方法接受一个$file参数,该参数为从客户端获取的$_files变量,返回重新命名后的文件名,如果上传失...2016-11-25
  • 金额阿拉伯数字转换为中文的自定义函数

    CREATE FUNCTION ChangeBigSmall (@ChangeMoney money) RETURNS VarChar(100) AS BEGIN Declare @String1 char(20) Declare @String2 char...2016-11-25
  • Android开发中findViewById()函数用法与简化

    findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20
  • C++中 Sort函数详细解析

    这篇文章主要介绍了C++中Sort函数详细解析,sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变...2022-08-18
  • php批量替换内容或指定目录下所有文件内容

    要替换字符串中的内容我们只要利用php相关函数,如strstr,str_replace,正则表达式了,那么我们要替换目录所有文件的内容就需要先遍历目录再打开文件再利用上面讲的函数替...2016-11-25
  • PHP文件上传一些小收获

    又码了一个周末的代码,这次在做一些关于文件上传的东西。(PHP UPLOAD)小有收获项目是一个BT种子列表,用户有权限上传自己的种子,然后配合BT TRACK服务器把种子的信息写出来...2016-11-25