php中rmdir删除非空目录程序代码

 更新时间:2016年11月25日 15:48  点击:2024
在php中rmdir是不能直接删除非空目录的,如果想利用rmdir来删除非空目录我们需要遍历目录然后来删除目录中的文件再删除目录的文件夹即可实现,

rmdir() 函数删除空的目录。

 代码如下 复制代码

<?php
$path = "images";
if(!rmdir($path))
  {
  echo ("Could not remove $path");
  }
else
{
 echo '删除目录失败,因为images非空目录';
}
?>

如果images是空目录可成功删除,如果非空目录就删除不了


代码如下

 代码如下 复制代码

<?php
// 说明: 删除非空目录的解决方案

function removeDir($dirName)
{
    if(! is_dir($dirName))
    {
        return false;
    }
    $handle = @opendir($dirName);
    while(($file = @readdir($handle)) !== false)
    {
        if($file != '.' && $file != '..')
        {
            $dir = $dirName . '/' . $file;
            is_dir($dir) ? removeDir($dir) : @unlink($dir);
        }
    }
    closedir($handle);
     
    return rmdir($dirName) ;
}
?>

在开发时我们可能会经常要去除重复的字符串,下面我以php为例来介绍在php中去除重复的字符串多方法地。

正则表达式

 代码如下 复制代码

echo preg_replace("/([^s]+)*\1{2,}([^s]+)*/",'',$string);


用循环我给写了个


例1

 代码如下 复制代码

$str = 'abccba 9872223s 12121212 ddd 1234560 vbwwc asasasasas zxzx qaz';
$source_array = explode(" ", $str);
foreach($source_array as $key=>$item){
    $current_str = str_split($item, 1);
    $current_array=array_count_values($current_str);    
    foreach ($current_array as $k => $it){
            if($it>=3)
                unset($source_array[$key]);
    }
}
var_dump($source_array);

例2

 代码如下 复制代码

<?php
$str = '蚂蚁蚂蚁学院学院,我非常爱爱爱爱爱你!522200011111333311111444';
function mbstringtoarray($str,$charset) {
  $strlen=mb_strlen($str);
  while($strlen){
    $array[]=mb_substr($str,0,1,$charset);
    $str=mb_substr($str,1,$strlen,$charset);
    $strlen=mb_strlen($str);
  }
  return $array;
}
$arr = mbstringtoarray($str,"gbk");  //分割字符串
$arr = array_unique($arr);           //过滤重复字符
$str = implode('', $arr);            //合并数组
echo $str;
?>


另一种办法

preg_replace_callback() 就更简单了,不过 preg_replace() 可以使用e修饰符来实现PREG_REPLACE_EVAL,能达到

差不多的效果

 代码如下 复制代码

echo preg_replace('/([^s]+)/e','check("\1")',$string); 
function check($str) { 
       $tmp=count_chars($str,1); 
       sort($tmp); 
       return array_pop($tmp)>2?"":$str; 
 }

HTTP_USER_AGENT是获取用户浏览器信息的一个全局变量,我们可以利用HTTP_USER_AGENT获取的值来判断用户是手机浏览器还是电脑访问网。
 代码如下 复制代码

$uAgent = $_SERVER['HTTP_USER_AGENT'];

$osPat = "mozilla|m3gate|winwap|openwave|Windows NT|Windows 3.1|95|Blackcomb|98|ME|X Window|ubuntu|Longhorn|AIX|Linux|AmigaOS|BEOS|HP-UX|OpenBSD|FreeBSD|NetBSD|OS/2|OSF1|SUN";

if(preg_match("/($osPat)/i", $uAgent )) //winwap 模拟WAP手机上网的一个浏览器; openwave|后面为各pc操作系统

{

echo "电脑访问";

}

else

{

echo "手机访问";

}

echo '<br/>'.$uAgent;

现在我们事完整的把实例写成一个文件

 代码如下 复制代码


$ua = strtolower($_SERVER['HTTP_USER_AGENT']);

$uachar = "/(nokia|sony|ericsson|mot|samsung|sgh|lg|philips|panasonic|alcatel|lenovo|cldc|midp|mobile|wap)/i";

if(($ua == '' || preg_match($uachar, $ua))&& !strpos(strtolower($_SERVER['REQUEST_URI']),'wap'))
{
    $Loaction = 'wap/';

    if (!empty($Loaction))
    {
        ecs_header("Location: $Loactionn");

        exit;
    }

}


/** 
* 自定义 header 函数,用于过滤可能出现的安全隐患 

* @param   string  string  内容 

* @return  void 
**/ 
function ecs_header($string, $replace = true, $http_response_code = 0)  
{  
    if (strpos($string, '../upgrade/index.php') === 0)  
    {  
        echo '<script type="text/javascript">window.location.href="' . $string . '";</script>';  
    }  
    $string = str_replace(array("r", "n"), array('', ''), $string);  
 
    if (preg_match('/^s*location:/is', $string))  
    {  
        @header($string . "n", $replace);  
 
        exit();  
    }  
 
    if (emptyempty($http_response_code) || PHP_VERSION < '4.3')  
    {  
        @header($string, $replace);  
    }  
    else 
    {  
        @header($string, $replace, $http_response_code);  
    }  

javascript中采用navigator.userAgent 来获取,但非智能机似乎不支持js。

支持js的移动客户端还可以用以下代码简单判断是不是windows电脑访问的

 代码如下 复制代码

if(navigator.platform.indexOf('Win32')!=-1){
//go to pc
}else{
// go to 手机
}

更多关于判断手机访问文章 http://www.111cn.net/phper/php-cy/44574.htm

在php中可以直接调用linux中的文件压缩命令来实现文件快速压缩与解压缩,有需要的朋友可参考参考。

用PHP调用Linux的命令行 ,执行压缩命令,OK,马上行动!


/*拆分成3个txt文件 分别是wow_1.txt wow_2.txt 和 wow_3.txt  全部放到 Exl_file 目录下*/

 代码如下 复制代码

$outputs=array();

/*用php的exec执行Linux命令   括号里的字符串就是你在Linux命令窗口里敲的命令;
   第二个参数是  linux执行该命令后返回的结果数组;
   linux执行返回的每一条结果依次存入该数组
  
   第三个参数是结果,如果执行成功,则Linux返回结果值为0,如果执行失败,则结果值不为0
  
*/
  

 代码如下 复制代码

exec("zip ./Exl_file/wow.zip ./Exl_file/wow_1.txt ./Exl_file/wow_2.txt ./Exl_file/wow_3.txt",$outputs,$rc);


if($rc!=0){
    foreach ($outputs as $ko=>$vo){
        echo "$vo<br/>";
    }
}else{
    $zipfile='./Exl_file/wow.zip';
       
    //文件下载  输出后删除相关文件
    }
}

你可以把  if($rc!=0)  改成  if(1==1)  查看Linux执行命令返回的结果行,如下图:

 代码如下 复制代码
adding: Exl_file/wow_1.txt (deflated 96%)
adding: Exl_file/wow_2.txt (deflated 97%)
adding: Exl_file/wow_3.txt (deflated 97%) 

   可以看到执行返回的信息全部输入到了 $outputs 数组中,*.zip文件生成成功

php提供了system(),exec(),passthru()这几个函数来调用外部的命令.

他们的区别 :

system() 输出并返回最后一行shell结果。
exec() 不输出结果,返回最后一行shell结果,所有结果可以保存到一个返回的数组里面。
passthru() 只调用命令,把命令的运行结果原样地直接输出到标准输出设备上。
相同点:都可以获得命令执行的状态码

一个php调用zip实现方法,这个在windows中的

 #upload.php
   

 代码如下 复制代码

    <table border='0' >
   
    <form ENCTYPE="multipart/form-data" action="upsave.php" method="post">
   
    <tr>
   
    <td>如果是*.ZIP的文件会被自动解压缩<br>
   
    <INPUT NAME="MyFile" TYPE="File" size="50">
   
    </td>
   
    </tr>
   
    <tr>
   
    <td colspan='2' align="center">
   
    <input type="Submit" value=" 上传 " class=iwhite>
   
    <input type="reset" value=" 重填 " class=iwhite>
   
    </td>
   
    </tr>
   
    </table>
   
    </body>
   
    </html>
   
    <?
   
    //upsave.php
   
    //保存上传的文件
   
    $filename="$MyFile_name";
   
    copy($MyFile,"$filename");
   
    unlink($MyFile);
   
    //判断是否是ZIP文件
   
    $expand_name=explode(".",$filename);
   
    if($expand_name[1] == "zip" or $expand_name[1] == "ZIP")
   
    {
   
    $str="pkunzip.exe -e $filename ";
   
    exec($str);
   
    unlink($filename);
   
    }
   
    ?>
bool get_magic_quotes_gpc ( void )返回当前 magic_quotes_gpc 配置选项的设置 记住,尝试在运行时设置 magic_quotes_gpc 将不会生效。

默认情况下,PHP 指令 magic_quotes_gpc 为 on,它主要是对所有的 GET、POST 和 COOKIE 数据自动运行 addslashes()。不要对已经被 magic_quotes_gpc 转义过的字符串使用 addslashes(),因为这样会导致双层转义。遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。

例子

1. addslashes() 示例

 代码如下 复制代码

<?
$str = "Is your name O&#39;reilly?";

// 输出:Is your name O''&#39;reilly?
echo addslashes($str);
?>

返回值

关闭 magic_quotes_gpc 时返回 0,否则是 1。 在 PHP 5.4.O 起将使用返回 FALSE

 代码如下 复制代码

<?php
// 如果启用了魔术引号
echo $_POST['lastname'];             // O'reilly
echo addslashes($_POST['lastname']); // O\'reilly

// 适用各个 PHP 版本的用法
if (get_magic_quotes_gpc()) {
    $lastname = stripslashes($_POST['lastname']);
}
else {
    $lastname = $_POST['lastname'];
}

// 如果使用 MySQL
$lastname = mysql_real_escape_string($lastname);

echo $lastname; // O'reilly
$sql = "INSERT INTO lastnames (lastname) VALUES ('$lastname')";
?>


php.ini:get_magic_quotes_gpc

在php的配置文件中,有个布尔值的设置,就是magic_quotes_runtime,当它打开时,

php的大部分函数自动的给从外部引入的(包括数据库或者文件)数据中的溢出字符加上反

斜线。 当然如果重复给溢出字符加反斜线,那么字符串中就会有多个反斜线,所以这时

就要用set_magic_quotes_runtime()与get_magic_quotes_runtime()设置和检测php.ini

文件中magic_quotes_runtime状态。 为了使自己的程序不管服务器是什么设置都能正常

执行。可以在程序开始用get_magic_quotes_runtime检测该设置的状态决定是否要手工处理

,或者在开始(或不需要自动转义的时候)用set_magic_quotes_runtime(0)关掉该设置。

magic_quotes_gpc设置是否自动为GPC(get,post,cookie)传来的数据中的'"\加上反斜

线。可以用get_magic_quotes_gpc()检测系统设置。如果没有打开这项设置,可以使用

addslashes()函数添加,它的功能就是给数据库查询语句等的需要在某些字符前加上了反

斜线。这些字符是单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符)。

[!--infotagslink--]

相关文章

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

    下面小编来给大家演示几个php操作zip文件的实例,我们可以读取zip包中指定文件与删除zip包中指定文件,下面来给大这介绍一下。 从zip压缩文件中提取文件 代...2016-11-25
  • 解决Pycharm的项目目录突然消失的问题

    今天小编就为大家分享一篇解决Pycharm的项目目录突然消失的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-22
  • 不打开网页直接查看网站的源代码

      有一种方法,可以不打开网站而直接查看到这个网站的源代码..   这样可以有效地防止误入恶意网站...   在浏览器地址栏输入:   view-source:http://...2016-09-20
  • php 调用goolge地图代码

    <?php require('path.inc.php'); header('content-Type: text/html; charset=utf-8'); $borough_id = intval($_GET['id']); if(!$borough_id){ echo ' ...2016-11-25
  • JS基于Mootools实现的个性菜单效果代码

    本文实例讲述了JS基于Mootools实现的个性菜单效果代码。分享给大家供大家参考,具体如下:这里演示基于Mootools做的带动画的垂直型菜单,是一个初学者写的,用来学习Mootools的使用有帮助,下载时请注意要将外部引用的mootools...2015-10-23
  • 删除条目时弹出的确认对话框

    复制代码 代码如下: <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
  • JS+CSS实现分类动态选择及移动功能效果代码

    本文实例讲述了JS+CSS实现分类动态选择及移动功能效果代码。分享给大家供大家参考,具体如下:这是一个类似选项卡功能的选择插件,与普通的TAb区别是加入了动画效果,多用于商品类网站,用作商品分类功能,不过其它网站也可以用,...2015-10-21
  • JS实现自定义简单网页软键盘效果代码

    本文实例讲述了JS实现自定义简单网页软键盘效果。分享给大家供大家参考,具体如下:这是一款自定义的简单点的网页软键盘,没有使用任何控件,仅是为了练习JavaScript编写水平,安全性方面没有过多考虑,有顾虑的可以不用,目的是学...2015-11-08
  • php 取除连续空格与换行代码

    php 取除连续空格与换行代码,这些我们都用到str_replace与正则函数 第一种: $content=str_replace("n","",$content); echo $content; 第二种: $content=preg_replac...2016-11-25
  • php简单用户登陆程序代码

    php简单用户登陆程序代码 这些教程很对初学者来讲是很有用的哦,这款就下面这一点点代码了哦。 <center> <p>&nbsp;</p> <p>&nbsp;</p> <form name="form1...2016-11-25
  • PHP实现清除wordpress里恶意代码

    公司一些wordpress网站由于下载的插件存在恶意代码,导致整个服务器所有网站PHP文件都存在恶意代码,就写了个简单的脚本清除。恶意代码示例...2015-10-23
  • js识别uc浏览器的代码

    其实挺简单的就是if(navigator.userAgent.indexOf('UCBrowser') > -1) {alert("uc浏览器");}else{//不是uc浏览器执行的操作}如果想测试某个浏览器的特征可以通过如下方法获取JS获取浏览器信息 浏览器代码名称:navigator...2015-11-08
  • JS实现双击屏幕滚动效果代码

    本文实例讲述了JS实现双击屏幕滚动效果代码。分享给大家供大家参考,具体如下:这里演示双击滚屏效果代码的实现方法,不知道有觉得有用处的没,现在网上还有很多还在用这个特效的呢,代码分享给大家吧。运行效果截图如下:在线演...2015-10-30
  • JS日期加减,日期运算代码

    一、日期减去天数等于第二个日期function cc(dd,dadd){//可以加上错误处理var a = new Date(dd)a = a.valueOf()a = a - dadd * 24 * 60 * 60 * 1000a = new Date(a)alert(a.getFullYear() + "年" + (a.getMonth() +...2015-11-08
  • php跨网站请求伪造与防止伪造方法

    伪造跨站请求介绍伪造跨站请求比较难以防范,而且危害巨大,攻击者可以通过这种方式恶作剧,发spam信息,删除数据等等。...2013-10-01
  • PHP开发微信支付的代码分享

    微信支付,即便交了保证金,你还是处理测试阶段,不能正式发布。必须到你通过程序测试提交订单、发货通知等数据到微信的系统中,才能申请发布。然后,因为在微信中是通过JS方式调用API,必须在微信后台设置支付授权目录,而且要到...2014-05-31
  • C#路径,文件,目录及IO常见操作汇总

    这篇文章主要介绍了C#路径,文件,目录及IO常见操作,较为详细的分析并汇总了C#关于路径,文件,目录及IO常见操作,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • PHP常用的小程序代码段

    本文实例讲述了PHP常用的小程序代码段。分享给大家供大家参考,具体如下:1.计算两个时间的相差几天$startdate=strtotime("2009-12-09");$enddate=strtotime("2009-12-05");上面的php时间日期函数strtotime已经把字符串...2015-11-24
  • php怎么用拼音 简单的php中文转拼音的实现代码

    小编分享了一段简单的php中文转拼音的实现代码,代码简单易懂,适合初学php的同学参考学习。 代码如下 复制代码 <?phpfunction Pinyin($_String...2017-07-06
  • Centos中彻底删除Mysql(rpm、yum安装的情况)

    我用的centos6,mysql让我整出了各种问题,我想重装一个全新的mysql,yum remove mysql-server mysql之后再install并不能得到一个干净的mysql,原来的/etc/my.cnf依然没变,datadir里面的数据已没有任何变化,手动删除/etc/my.cn...2015-03-15