直接上代码:
下面的例子我们是以删除指定目录的html为例子哦,如果你要其它文件我们只要把html改成你自己要删除的后缀名就可以了。
代码如下 | 复制代码 |
<?php $lanmu = array("action","tiyu","yizhi","sheji","gaoxiao","maoxian","qipai","celue","minjie","xiuxian","ertong","jingying","webgame"); foreach($lanmu as $v2){ $mstdel[] =glob(getcwd().DIRECTORY_SEPARATOR.$v2.DIRECTORY_SEPARATOR.'[1-9]*.html'); } //var_dump($mstdel); //var_dump(count($mstdel)); $i=0; foreach($mstdel as $val){ foreach($val as $val2){ //echo $val2."<Br>"; if(unlink($val2)) $i++; //$countval2[] = $val2; } } echo 'del success: '.$i; //echo count($countval2); //var_dump(glob(getcwd().DIRECTORY_SEPARATOR.'sheji'.DIRECTORY_SEPARATOR.'[1-9]*.html')); //var_dump(glob('./sheji/[1-9]*.html')); //var_dump(glob('./sheji/[^index]*.html')); //array_walk(glob(getcwd().'/sheji/[1-9]*.html'),'unlink'); //array_walk(glob('./sheji/[1-9]*.html'),'unlink'); //array_walk(glob(getcwd().DIRECTORY_SEPARATOR.'sheji'.DIRECTORY_SEPARATOR.'[1-9]*.html'),'unlink'); //var_dump(DIRECTORY_SEPARATOR); //var_dump(unlink('D:shanmaowwwwwwroottiantangtvxyxh4cc/sheji/20312.html')); ?> |
例子
public function del(){
header("Content-Type: text/html; charset=UTF-8");
echo '点击文件名可以查看:<br>';
$dir =getcwd()."/html/";
//获取某目录下所有文件、目录名(不包括子目录下文件、目录名)
$handler = opendir($dir);
while (($filename = readdir($handler)) !== false) {//务必使用!==,防止目录下出现类似文件名“0”等情况
if ($filename != "." && $filename != "..") {
$files[] = $filename ;
}
}
closedir($handler);
//打印所有文件名
foreach ($files as $value) {
$url = 'http://'.$_SERVER['HTTP_HOST']."/html/".$value;
echo "<a href='".$url."' target='_blank'>".$value."</a> | <a href='/index.php?s=/Index1/dodel/name/".$value."' target='_self'>删除</a><br />";
}
}
public function dodel(){
header("Content-Type: text/html; charset=UTF-8");
$fname = $this->_get("name");
$fname = getcwd()."/html/".$fname.".html";
if(unlink($fname)){
echo $fname.' 文件删除成功!<a href="javascript:history.go(-1);">返回</a>';
}else{
echo $fname.' 删除失败!<a href="javascript:history.go(-1);">返回</a>';
}
}
获取目录下所有文件,包括子目录
代码如下 | 复制代码 |
function get_allfiles($path,&$files) { if(is_dir($path)){ $dp = dir($path); while ($file = $dp ->read()){ if($file !="." && $file !=".."){ get_allfiles($path."/".$file, $files); } } $dp ->close(); } if(is_file($path)){ $files[] = $path; } } function get_filenamesbydir($dir){ $files = array(); get_allfiles($dir,$files); return $files; } $filenames = get_filenamesbydir("static/image/"); //打印所有文件名,包括路径 foreach ($filenames as $value) { echo $value."<br />"; } |
php删除文件夹及其文件夹下所有文件
代码如下 | 复制代码 |
function deldir($dir) { //先删除目录下的文件: $dh=opendir($dir); while ($file=readdir($dh)) { if($file!="." && $file!="..") { $fullpath=$dir."/".$file; if(!is_dir($fullpath)) { unlink($fullpath); } else { deldir($fullpath); } } } closedir($dh); //删除当前文件夹: if(rmdir($dir)) { return true; } else { return false; } } |
今天本地调试,有个cookies死活都写不进去,环境如下:
域名:111cn.net
浏览器:chrome34
代码:
代码如下 | 复制代码 |
header("Content-type: text/html; charset=utf-8"); if (isset($_COOKIE['test'])) { echo '获取到的cookies是:'.$_COOKIE['test']; } elseif (setcookie('test', 'okh', time() + 3600, '/', '.111cn.net')) { echo '设置cookies:test'; } else { echo '什么都没有'; } |
用111cn.net访问,上面这段代码在chrome下一直设置成功,但是却一直都没记录。找了半天原因,一朋友从手册上告诉我:
The domain that the cookie is available to. Setting the domain to ‘www.example.com’ will make the cookie available in the www subdomain and higher subdomains. Cookies available to a lower domain, such as ‘example.com’ will be available to higher subdomains, such as ‘www.example.com’. Older browsers still implementing the deprecated » RFC 2109 may require a leading . to match all subdomains.
于是我做了这么一个调整:
用www.111cn.net进行访问
修改之前的代码为
1
setcookie('test', 'okh', time() + 3600, '/', 'www.111cn.net')
这下正常设置,也正常记录了。
但是存在2个问题:
如何设置不带WWW的域名的cookies呢?比如:111cn.net
设置www.111cn.net虽然能在www.111cn.net下使用,但是却不能在111cn.net下使用,如何设置cookies使其通用呢?
通过求助,得知原因如下:
这个域名特殊。火狐、chrome不认为 www.111cn.net 是 111cn.net 的二级域名:
代码如下 | 复制代码 |
var eTLDService = Components.classes["@mozilla.org/network/effective-tld-service;1"] .getService(Components.interfaces.nsIEffectiveTLDService); eTLDService.getBaseDomain(gBrowser.selectedTab.linkedBrowser.currentURI); /* www.111cn.net */ |
111cn.net 在 effective_tld_names.dat 文件中列出来了:
a.org
b.cn
原来是这么一个小问题,困扰了我一天,原本是为了方便,所以将这个域名作为自己本地开发用,结果出现这个情况,只好将111cn.net修改为1a.com
有的网站有很多的 CSS 文件,如果将它们合并到一起并且进行 Gzip 压缩会减少请求和文件大小,有利于提高网站加载速度。为了方便我不推荐人工压缩和合并 CSS,而是使用 PHP 代码。首先将所有 CSS 放到一个目录里,然后在此目录新建一个空的 CSS 文件,命名为 css.php(其实除了后缀命名随便)。
然后在 PHP 文件里放下边的代码:
代码如下 | 复制代码 |
<?php 引入 CSS 文件的代码换成引入这个 PHP 文件,例如:
|
压缩多个css为一个css
代码如下 | 复制代码 |
<?php Use the same code for Javascript, but replace below "text/css" with "text/javascript" and of course make sure you include .js files instead of .css ones. include('somefile.css'); ob_flush(); |
下面整理可压缩css,js的函数
代码如下 | 复制代码 |
|
PHP 文件里就包含了所有被压缩的 CSS 代码,而且可以自动引入 CSS 目录里的所有 CSS 文件,不用在新建 CSS 文件的时候再修改这个 PHP 文件。
前端时间做一个APP后台时用户要求用户的评论以xx分钟前这种格式显示,给用户以良好的体验,于是笔者写了次函数。本函数主要是利用PHP计算两个时间之间的差值,通过差值来转换,虽然代码很简单,但是很实用。代码如下 | 复制代码 |
<?php /** * 时间差计算 * * @param Timestamp $time 时间差 * @return String Time Elapsed * @author jakehu (http://www.111cn.net/) */ function time2Units ($time) { $year = floor($time / 60 / 60 / 24 / 365); $time -= $year * 60 * 60 * 24 * 365; $month = floor($time / 60 / 60 / 24 / 30); $time -= $month * 60 * 60 * 24 * 30; $week = floor($time / 60 / 60 / 24 / 7); $time -= $week * 60 * 60 * 24 * 7; $day = floor($time / 60 / 60 / 24); $time -= $day * 60 * 60 * 24; $hour = floor($time / 60 / 60); $time -= $hour * 60 * 60; $minute = floor($time / 60); $time -= $minute * 60; $second = $time; $elapse = ''; $unitArr = array('年前' =>'year', '个月前'=>'month', '周前'=>'week', '天前'=>'day', '小时前'=>'hour', '分钟前'=>'minute', '秒前'=>'second' ); foreach ( $unitArr as $cn => $u ) { if ( $year > 0 ) {//大于一年显示年月日 $elapse = date('Y/m/d',time()-$time); break; } else if ( $$u > 0 ) { $elapse = $$u . $cn; break; } } return $elapse; } $past = 1390000000; //起点时间 $diff = time() - $past;//时间差 echo '发表于' . time2Units($diff) . '前'; ?> |