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程序中的常见漏洞进行攻击(上)
Oct 09 PHP
模仿OSO的论坛(四)
Oct 09 PHP
PHP编程最快明白(第一讲 软件环境和准备工作)
Oct 25 PHP
PHP FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)
Jul 23 PHP
如何使用php输出时间格式
Aug 31 PHP
PHP给文字内容中的关键字进行套红处理
Apr 12 PHP
PHP微信公众号自动发送红包API
Jun 01 PHP
PHP二维数组矩形转置实例
Jul 20 PHP
php格式化时间戳
Dec 17 PHP
搭建自己的PHP MVC框架详解
Aug 16 PHP
PHP+MySQL实现输入页码跳转到指定页面功能示例
Jun 01 PHP
浅谈laravel-admin form中的数据,在提交后,保存前,获取并进行编辑
Oct 21 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
discuz Passport 通行证 整合笔记
2008/06/30 PHP
php 字符转义 注意事项
2009/05/27 PHP
PHP 生成的XML以FLASH获取为乱码终极解决
2009/08/07 PHP
PHP在不同页面间传递Json数据示例代码
2013/06/08 PHP
解析PHP无限级分类方法及代码
2013/06/21 PHP
php中cookie的使用方法
2014/03/29 PHP
php自定义函数截取汉字长度
2014/05/15 PHP
采用thinkphp自带方法生成静态html文件详解
2014/06/13 PHP
jQuery实现模仿微博下拉滚动条加载数据效果
2015/12/25 Javascript
js select实现省市区联动选择
2020/04/17 Javascript
JavaScript数组操作详解
2017/02/04 Javascript
详解Vue中添加过渡效果
2017/03/20 Javascript
nodejs个人博客开发第七步 后台登陆
2017/04/12 NodeJs
微信小程序网络请求wx.request详解及实例
2017/05/18 Javascript
Vue.js划分组件的方法
2017/10/29 Javascript
vue组件中的样式属性scoped实例详解
2018/10/30 Javascript
详解在网页上通过JS实现文本的语音朗读
2019/03/28 Javascript
vue请求本地自己编写的json文件的方法
2019/04/25 Javascript
vue中使用element组件时事件想要传递其他参数的问题
2019/09/18 Javascript
Vue 3自定义指令开发的相关总结
2021/01/29 Vue.js
在python3.5中使用OpenCV的实例讲解
2018/04/02 Python
pycharm 取消默认的右击运行unittest的方法
2018/11/29 Python
python判断文件是否存在,不存在就创建一个的实例
2019/02/18 Python
python 使用pdfminer3k 读取PDF文档的例子
2019/08/27 Python
python 批量修改 labelImg 生成的xml文件的方法
2019/09/09 Python
Python爬虫库requests获取响应内容、响应状态码、响应头
2020/01/25 Python
python自动化unittest yaml使用过程解析
2020/02/03 Python
Python猜数字算法题详解
2020/03/01 Python
地图可视化神器kepler.gl python接口的使用方法
2020/12/22 Python
HTML5中微数据概述及在搜索引擎中的使用举例
2013/02/07 HTML / CSS
在SQL Server中创建数据库主要有那种方式
2013/09/10 面试题
领导班子在批评与自我批评座谈会上的发言
2014/09/28 职场文书
趣味运动会通讯稿
2015/07/18 职场文书
《钢铁是怎样炼成的》高中读后感
2019/08/07 职场文书
《追风筝的人》:人心中的成见是座大山,但请不忘初心
2019/11/15 职场文书
关于Redis的主从复制及哨兵问题
2022/06/16 Redis