在php编程中,可能会遇到这样的情况:一个GBK版本的程序,想转换为UTF8版本;或只有GBK的源码,在做二次开发时,不想改变IDE的编码方式,想用程序一次性的把编码换为UTF8格式。
本文介绍的这个代码,会帮你解决这些问题。
例子:
/**
* 转换文件夹所有文件的编码
* @param string $filename
* @edit www.
*/
function iconv_file($filename,$input_encoding='gbk',$output_encoding='utf-8')
{
if(file_exists($filename))
{
if(is_dir($filename))
{
foreach (glob("$filename/*") as $key=>$value)
{
iconv_file($value);
}
}
else
{
$contents_before = file_get_contents($filename);
/*$encoding = mb_detect_encoding($contents_before,array('CP936','ASCII','GBK','GB2312','UTF-8'));
echo $encoding;
if($encoding=='UTF-8') mb_detect_encoding函数不工作
{
return;
}*/
$contents_after = iconv($input_encoding,$output_encoding,$contents_before);
file_put_contents($filename, $contents_after);
}
}
else
{
echo '参数错误';
return false;
}
}
iconv_file('./test');
?>
以下代码,实现:图片的等比例放大与缩小。
<?php
/**
* 图片等比例放大与缩小
* @resizeimage
* @param $srcfile 源文件尺寸
* @param $mySize 要转换的尺寸
* edit www.
* at 2013/6/7
*/
function resizeimage($srcfile,$mySize){
$size=getimagesize($srcfile);
switch($size[2]){
case 1:
$img=imagecreatefromgif($srcfile);
break;
case 2:
$img=imagecreatefromjpeg($srcfile);
break;
case 3:
$img=imagecreatefrompng($srcfile);
break;
}
//源图片的宽度和高度
$oldImg['w']=imagesx($img);
$oldImg['h']=imagesy($img);
if ($oldImg['w']<=$mySize['w'] && $oldImg['h']<156){
$rate=1;
}elseif ($oldImg['w']>$mySize['w'] && $oldImg['h']<$mySize['h']){
$rate=$mySize['w']/$oldImg['w'];
}elseif ($oldImg['w']<$mySize['w'] && $oldImg['h']>$mySize['h']){
$rate=$mySize['h']/$oldImg['h'];
}elseif ($oldImg['w']>$mySize['w'] && $oldImg['h']>$mySize['h']){
$rate1=$mySize['w']/$oldImg['w'];
$rate2=$mySize['h']/$oldImg['h'];
if ($rate1>$rate2){$rate=$rate2;}else{$rate=$rate1;}
}
$newImg['w']=$oldImg['w']*$rate;
$newImg['h']=$oldImg['h']*$rate;
return "width=".$newImg['w']." height=".$newImg['h'];
}
//调用示例:
$mySize=array('w'=>143,'h'=>156);
$imgSize=resizeimage("22.jpg",$mySize);
echo "<img src=/index.html"22.jpg\"".resizeimage("22.jpg",$mySize)."/>";
?>
方法1,删除目录及目录下的所有文件
/**
* 循环删除目录和文件函数
* @delDirAndFile
* @param $dirName
* @edit www.
function delDirAndFile( $dirName )
{
if ( $handle = opendir( "$dirName" ) ) {
while ( false !== ( $item = readdir( $handle ) ) ) {
if ( $item != "." && $item != ".." ) {
if ( is_dir( "$dirName/$item" ) ) {
delDirAndFile( "$dirName/$item" );
} else {
if( unlink( "$dirName/$item" ) )echo "成功删除文件: $dirName/$item
\n”;
}
}
}
closedir( $handle );
if( rmdir( $dirName ) )echo “成功删除目录: $dirName
\n”;
}
}
?>
函数2,仅删除指定目录下的文件,不删除目录文件夹。
/**
* 循环目录下的所有文件
* @func delFileUnderDir
* @param $dirName
* @edit www.
*/
function delFileUnderDir( $dirName )
{
if ( $handle = opendir( "$dirName" ) ) {
while ( false !== ( $item = readdir( $handle ) ) ) {
if ( $item != "." && $item != ".." ) {
if ( is_dir( "$dirName/$item" ) ) {
delFileUnderDir( "$dirName/$item" );
} else {
if( unlink( "$dirName/$item" ) )echo "成功删除文件: $dirName/$item
\n”;
}
}
}
closedir( $handle );
}
}
?>
下面来看具体的调用实例。
1,删除一个名叫”upload”的同级目录即此目录下的所有文件:
delDirAndFile( 'upload');
?>
2,删除一个名叫”upload”目录下的所有文件(但无需删除目录文件夹):
delFileUnderDir( 'upload');
?>