php多图上传

<html>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <head>
        <title>多文件上传</title>
    </head>
    <body>
    <form accept="" method="post" enctype="multipart/form-data">
    <input  type="file" name="img[]" /><br />
    <input  type="file" name="img[]" /><br />
    <input  type="file" name="img[]" /><br />
    <input  type="file" name="img[]" /><br />
    <input  type="file" name="img[]" /><br />
    <input  type="file" name="img[]" /><br />
    <input  type="submit" name="s" /><br />
    </form>

<?php
    //上传文件信息
    $img = $_FILES['img'];
    if ($img)
    {
        //文件存放目录,和本php文件同级
        $dir = dirname(__file__);
        $i = 0;
        foreach ($img['tmp_name'] as $value)
        {
            $filename = $img['name'][$i];
            if ($value)
            {
         		$savepath="$dir\\$filename";
                $state = move_uploaded_file($value, $savepath);
                //如果上传成功,预览
                if($state)
                {
           	 		echo "<img src='$filename' alt='$filename' /> ";
                }
            }
            $i++;
        }
    }
?>
    </body>
</html>

  清除目录下的文件

<?
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;
  }
}
?>

  实现相关文章的功能实现

一般做内容网站,需要在每一篇文章出现与该文章相关的文章列表。多数人使用的方法大概是:建立一个关键词列表,判断每篇文章包含有那些关键词,最后根据关键词找出与某篇文章最相关的文章。对于内容比较复杂的网站,确定关键列表词显然比较麻烦。

后来我查阅了一些php函数,感觉similar_text(php4,php5)函数能够十分方便的达到我的要求。这个思路是:从文章列表中取出所有的文章标题,将所有的文章标题都同当前标题对比,将对比结果生成一个数组,按照相似度的大小由大到标题,利用similar_text将这些文章标题同原文章标题做对比,按标题的相似程度重新排列标题,就得到了与原文章相似的文章列表。

这个思路用到的关键函数是:

1 int similar_text ( string $first, string $second [, float $percent] )

它返回的是两个字根串的相同字节数。

按照这个思路,我们建立如下的函数,这个函数的功能是把$arr_title数组按照同$title相似的的顺序重新排列数组。

<?php
$demo_title = "简明现代魔法";
$demo_arr_title = array("简单易懂的现代魔法","简单明了的现代魔法","简明扼要的古代魔法","不简单的现代魔法","很难懂的现代魔法");
$new_array = getSimilar($demo_title,$demo_arr_title);
//print_r($new_array);
echo "与[$demo_title]最相关的前三个文章是:<br/>";
for($j=0; $j<=2; $j++)
{
	echo ($j+1).":".$new_array[$j]."<br/>";
}

//$title当前标题,$arrayTitle为需要查找的数组
function getSimilar($title,$arr_title)
{
	$arr_len = count($arr_title);
	for($i=0; $i<=($arr_len-1); $i++)
	{
		//取得两个字符串相似的字节数
		$arr_similar[$i] = similar_text($arr_title[$i],$title);
	}
	arsort($arr_similar);	//按照相似的字节数由高到低排序
	reset($arr_similar);	//将指针移到数组的第一单元
	$index = 0;
	foreach($arr_similar as $old_index=>$similar)
	{
		$new_title_array[$index] = $arr_title[$old_index];
		$index++;
	}
	return $new_title_array;
}
?>

  

程序运行结果:

与[简明现代魔法]最相关的前三个文章是:
1:简单明了的现代魔法
2:简单易懂的现代魔法
3:简明扼要的古代魔法

  php图片的裁剪

<?php
list($src_w,$src_h)=getimagesize($src_img);  // 获取原图尺寸
$dst_scale = $dst_h/$dst_w; //目标图像长宽比
$src_scale = $src_h/$src_w; // 原图长宽比

if($src_scale>=$dst_scale)
{
	// 过高
	$w = intval($src_w);
	$h = intval($dst_scale*$w);
	$x = 0;
	$y = ($src_h - $h)/3;
}
else
{
// 过宽
	$h = intval($src_h);
	$w = intval($h/$dst_scale);
	$x = ($src_w - $w)/2;
	$y = 0;
}
// 剪裁
$source=imagecreatefromjpeg($src_img);
$croped=imagecreatetruecolor($w, $h);
imagecopy($croped,$source,0,0,$x,$y,$src_w,$src_h);
// 缩放
$scale = $dst_w/$w;
$target = imagecreatetruecolor($dst_w, $dst_h);
$final_w = intval($w*$scale);
$final_h = intval($h*$scale);
imagecopysampled($target,$croped,0,0,0,0,$final_w,$final_h,$w,$h);
// 保存
$timestamp = time();
imagejpeg($target, "$timestamp.jpg");
imagedestroy($target);
?>

  大并发下的优化处理

1.redis

2.使用加速Xcache

3.使用文件锁

至于反射 我们就可以利用这个特性进行架构的开发

地址:http://php.net/manual/zh/reflectionclass.getproperties.php

   

php代码小实例的更多相关文章

  1. winform 异步读取数据 小实例

    这几天对突然对委托事件,异步编程产生了兴趣,大量阅读前辈们的代码后自己总结了一下. 主要是实现 DataTable的导入导出,当然可以模拟从数据库读取大量数据,这可能需要一定的时间,然后 再把数据导入 ...

  2. Objective-C之代理设计模式小实例

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  3. canva实践小实例 —— 马赛克效果

    前面给大家带来了操作像素的API,此时此刻,我觉得应该配以小实例来进行进一步的说明和演示,以便给大家带来更宽广的视野和灵感,你们看了我的那么多的文章,应该是懂我的风格,废话不多说,进入正题: 这次给大 ...

  4. canvas实践小实例二 —— 扇形

    俗话说:发图不留种,菊花万人捅!我这里想延伸一下:教学不给例,说你是傻逼!哎呀,还挺押韵,嘻嘻,开个玩笑! 我们都讲了四期API的知识了,估计大家看的也是枯燥的很啊,前面的小实例也是太简单,简直不解渴 ...

  5. canvas实践小实例一 —— 画板工具

    前面讲了一部分的canvasAPI的基础知识,光看API的介绍确实是很无趣乏味,需要一点可以激发内心的激情的东西来激励自己来学习,于是就了伴随canvasAPI学习的小实例,这样通过API的知识,结合 ...

  6. 一个简单的Android小实例

    原文:一个简单的Android小实例 一.配置环境 1.下载intellij idea15 2.安装Android SDK,通过Android SDK管理器安装或卸载Android平台   3.安装J ...

  7. Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作

    Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作 1>. 创建一个控制台程序2>. 添加一个 ADO.NET实体数据模型,选择对应的数据库与表(Studen ...

  8. [置顶] Cocos2d-x 实例源码分析之二 小实例的主框架

    这篇文章是分析第一个小实例ActionTest的源码.其实所有实例程序的结构都是一样的,只有特定方法里的代码不同,大的框架都是一样的.也就是说看完这篇文章你就可以自己开始分析其他源码了. 废话不多说, ...

  9. WCF小实例以及三种宿主

    WCF小实例以及三种宿主 最近一直在学习WCF相关知识,下面将通过一个小实例对所学的知识进行简单的回顾:本实例是一个简单三层操作数据库,并且也简单实现的三种宿主(控制台宿主,IIS宿主以及Window ...

随机推荐

  1. Web 前端开发精华文章推荐(jQuery、HTML5、CSS3)【系列十二】

    2012年12月12日,[<Web 前端开发人员和设计师必读文章>系列十二]和大家见面了.梦想天空博客关注 前端开发 技术,分享各种增强网站用户体验的 jQuery 插件,展示前沿的 HT ...

  2. js几种生成随机颜色方法

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  3. 如何采用easyui tree编写简单角色权限代码

    首先每个管理员得对应一个角色: 而角色可以操作多个栏目,这种情况下我们可以采用tree多选的方式: 在页面上js代码: $('#Permission').dialog({ title: '栏目权限', ...

  4. 理解jQuery对象$.html

    前面的话 如果要比喻jQuery和原生javascript的关系,我个人认为是自动档和手动档汽车的区别.使用原生javascript,可以知道离合器以及档位的作用:而使用jQuery,则把离合器和手动 ...

  5. 全国SHP地图数据赠送

    百度搜索:GIS之家获取全国SHP图层数据的方式:收藏(ArcGIS地图全国电子地图shp格式版本GIS地图数据.GIS开发顺德政府GIS公共服务共享平台),并且截图验证,验证通过后,收下邮箱,我把下 ...

  6. 一步步实现ABAP后台导入EXCEL到数据库【2】

    前文:http://www.cnblogs.com/hhelibeb/p/5912330.html 既然后台作业只能在应用服务器运行,那么,我们可以先将要上传的数据保存在应用服务器中,之后再以后台作业 ...

  7. SQL Server 2012 新特性:其他

    安装期间的设置   为了强化角色分离,不自动在 sysadmin 固定服务器角色中设置 BUILTIN\administrators 和 Local System (NT AUTHORITY\SYST ...

  8. T-SQL 如何获取一个表的列名

    方法1: exec sp_columns [{table_name}],[{schema_name}] 方法2: SELECT * FROM syscolumns WHERE id=OBJECT_ID ...

  9. Python:版本升级

    Linux 上安装的python版本是2.6.6,不能满足我运行软件的要求,所以对python进行升级.现在要了解MySQL Fabric,需要使用Python 2.7,所以只能对现有版本进行升级了. ...

  10. mongodb之使用explain和hint性能分析和优化

    当你第一眼看到explain和hint的时候,第一个反应就是mysql中所谓的这两个关键词,确实可以看出,这个就是在mysql中借鉴过来的,既然是借鉴 过来的,我想大家都知道这两个关键字的用处,话不多 ...