PHP 获取目录下的图片并随机显示的代码


Posted in PHP onDecember 28, 2009

当时想做一个随机更换背景图片的功能,用JavaScript写的话,程序流程应该是:建立一个图片数组->随机选择数组里其中一个值->生成样式并写入body标签。
可是用JS做的话,有以下缺点:
1.万一浏览器禁用了JS的话就失效了,而且写代码是需要考虑兼容性。
2.维护比较麻烦,图片的位置都存放在数组里。
于是我提议用PHP处理,可是我和她对PHP都是半桶水的,一时之间也想不出怎么做。今天时运高,看到一个PHP随机显示目录下图片的源码,学习一下,并分享之。 

先看看原理:从一个目录里获取某类型文件的清单(用在WEB的话一般是jpg/gif/png)->通过随机函数选一个图片->输出代码。
PHP代码如下:

$imglist=''; 
//用$img_folder变量保存图片所在目录,必须用“/”结尾 
$img_folder = "images/tutorials/"; 
mt_srand((double)microtime()*1000); 
//使用目录类 
$imgs = dir($img_folder); 
//检查目录下是否有图片,并生成一个清单 
while ($file = $imgs->read()) { 
if (eregi("gif", $file) || eregi("jpg", $file) || eregi("png", $file)) 
$imglist .= "$file "; 
} closedir($imgs->handle); 
//把清单里的项都放到一个数组里 
$imglist = explode(" ", $imglist); 
$no = sizeof($imglist)-2; 
//生成一个介于0和图片数量之间的随机数 
$random = mt_rand(0, $no); 
$image = $imglist[$random]; 
//输出结果 
echo '<img src="'.$img_folder.$image.'" border="0/" alt="" />';

如果要通过这个函数变换页面背景的话,可以把最后一句改为:
echo '<body style="background-image:'.$img_folder.$image.'>';</body>

并用整段程序替换<body>标签。
如果需要多次调用此程序的话,可以写成一个函数,各位按需要改写。
总结
用PHP的方法来输出随机图片的好处是:
1.维护简单,只需要控制目录里图片的数量。
2.可以自定义文件类型,只要你有需要,改成随机输出一个Flash也行的
3.可以自定义输出结果,换句话说,用在什么地方都行了
4.改写成函数后功能更强大
PHP 相关文章推荐
PHP+.htaccess实现全站静态HTML文件GZIP压缩传输(一)
Feb 15 PHP
基于MySQL到MongoDB简易对照表的详解
Jun 03 PHP
开源php中文分词系统SCWS安装和使用实例
Apr 11 PHP
PHP函数func_num_args用法实例分析
Dec 07 PHP
Symfony学习十分钟入门经典教程
Feb 03 PHP
PHP微信开发之查询城市天气
Jun 23 PHP
PHP微信刮刮卡 附微信接口
Jul 22 PHP
CI框架(ajax分页,全选,反选,不选,批量删除)完整代码详解
Nov 01 PHP
PHP二维数组去重实例分析
Nov 18 PHP
老生常谈PHP中的数据结构:DS扩展
Jul 17 PHP
详解PHP字符串替换str_replace()函数四种用法
Oct 13 PHP
PHP实现长轮询消息实时推送功能代码实例讲解
Feb 26 PHP
phpMyAdmin链接MySql错误 个人解决方案
Dec 28 #PHP
php 需要掌握的东西 不做浮躁的人
Dec 28 #PHP
php 文章采集正则代码
Dec 28 #PHP
PHP array_push 数组函数
Dec 26 #PHP
PHP simple_html_dom.php+正则 采集文章代码
Dec 24 #PHP
在PHP中检查PHP文件是否有语法错误的方法
Dec 23 #PHP
php 常用类整理
Dec 23 #PHP
You might like
php cc攻击代码与防范方法
2012/10/18 PHP
PHP中判断变量为空的几种方法分享
2013/08/26 PHP
PHP策略模式定义与用法示例
2017/07/27 PHP
SCP远程VPS快速搬家和WDCP升级php5.3安装memcached和eaccelerator教程
2017/07/27 PHP
Laravel框架实现的记录SQL日志功能示例
2018/06/19 PHP
JavaScript是否可实现多线程  深入理解JavaScript定时机制
2009/12/22 Javascript
解析jQuery的三种bind/One/Live事件绑定使用方法
2013/12/30 Javascript
用原生js做个简单的滑动效果的回到顶部
2014/10/15 Javascript
js 左右悬浮对联广告特效代码
2014/12/12 Javascript
JavaScript实现多个重叠层点击切换效果的方法
2015/04/24 Javascript
详解AngularJS的通信机制
2015/06/18 Javascript
浅谈Javascript事件对象
2017/02/05 Javascript
selenium 与 chrome 进行qq登录并发邮件操作实例详解
2017/04/06 Javascript
JS实现按钮控制计时开始和停止功能
2017/07/27 Javascript
浅谈ES6新增的数组方法和对象
2017/08/08 Javascript
vue实现双向绑定和依赖收集遇到的坑
2018/11/29 Javascript
Python实现统计文本文件字数的方法
2017/05/05 Python
Python使用 Beanstalkd 做异步任务处理的方法
2018/04/24 Python
Django如何配置mysql数据库
2018/05/04 Python
pandas基于时间序列的固定时间间隔求均值的方法
2019/07/04 Python
AmazeUI 输入框组的示例代码
2020/08/14 HTML / CSS
全球酒店预订网站:Hotels.com
2016/08/10 全球购物
Sephora丝芙兰澳洲官方网站:国际知名化妆品购物
2016/10/27 全球购物
中国高端鲜花第一品牌:roseonly(一生只送一人)
2017/02/12 全球购物
英国在线汽车和面包车零件商店:Car Parts 4 Less
2018/08/15 全球购物
拉斯维加斯酒店、演出、旅游、俱乐部及更多:Vegas.com
2019/02/28 全球购物
美津浓巴西官方网站:Mizuno巴西
2019/07/24 全球购物
Expedia瑞典官网:预订度假屋、酒店、汽车租赁、机票等
2021/01/23 全球购物
某公司Java工程师面试题笔试题
2016/03/27 面试题
索引覆盖(Index Covering)查询含义
2012/02/18 面试题
人力资源管理专业学生自我评价
2013/11/20 职场文书
物流专业大学生职业生涯规划书范文
2014/01/15 职场文书
五一劳动节活动总结
2015/02/09 职场文书
幼儿园父亲节活动总结
2015/02/12 职场文书
2015年禁毒工作总结
2015/04/30 职场文书
Python入门之基础语法详解
2021/05/11 Python