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

当时想做一个随机更换背景图片的功能,用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.改写成函数后功能更强大

(0)

相关推荐

  • php 从指定数字中获取随机组合的简单方法(推荐)

    例如:给定数字100,需要随机获取3个组成这个数字的组合,例如70,20,10 代码如下: <?php /** * 获取指定数字的随机数字组合 * @param Int $var 数字 * @param Int $num 组合这个数字的数量 * @return Array */ function getNumGroups($var, $num){ // 数量不正确 if($var<$num){ return array(); } $total = 0; $result = array(); f

  • PHP随机获取未被微信屏蔽的域名(微信域名检测)

    用户名和KEY请到www.weixin139.com获取 <?php $url = "https://api.weixin139.com/weixin/domain/auto_check_list?user=xxx&key=xxx&type=1"; $con = get_msg($url); $data = json_decode($con,true); $count = count($data)-1; $rand = rand(0,$count); echo $

  • php获取四位字母和数字的随机数的实现方法

    那么我们知道在php中简单的四位数的纯数字验证可以用rand(1000,9999)就可以了,但如果我们要得到字母和数字的随机四位数,那我们该如何写函数呢?下面胡鹏博客在php资料栏目下给出一个完整的实例. <?php function GetfourStr($len) { $chars_array = array( "0", "1", "2", "3", "4", "5", &qu

  • php获取指定数量随机字符串的方法

    本文实例讲述了php获取指定数量随机字符串的方法.分享给大家供大家参考,具体如下: function getARandLetter($number = 1) { if ($number == 0) return FALSE; //去除0 $number = $number < 0 ? - $number : $number; //如果小于零取正值 $letterArr = array ('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K',

  • php+mysql实现数据库随机重排实例

    本文实例实现了php+mysql数据库随机重排的方法,可将表中的所有数据随机读出来一次之后再进行随机保存到另一个表,从而达到了记录随机的功能. 主要实现代码如下: 复制代码 代码如下: <?php //数据库连接就不写在这里面了 $s = isset( $_GET['s'] )?$_GET['s']:0; $e = isset( $_GET['e'])?$_GET['e']:50; $count =85000; if( $s < $count ) {  $sql = "select

  • PHP实现在数据库百万条数据中随机获取20条记录的方法

    本文实例讲述了PHP实现在数据库百万条数据中随机获取20条记录的方法.分享给大家供大家参考,具体如下: 额,为什么要写这个? 在去某个公司面试时,让写个算法出来,当时就蒙了,我开发过程中用到算法的吗?又不是大数据开发,分析. 今天偶然想起来一个坑爹数据,如:PHP取百万条数据中随机20条记录,当时就用的算法. 1.先统计统计数据库多少条记录(这个做个数据缓存,如1小时重新统计一次), 2.根据总条数,随机1次,1次性取出20条记录(当然这个就相当于分页了,要求不高的话,这个最快,我用的就是这个)

  • php 利用array_slice函数获取随机数组或前几条数据

    先给大家说下基本语法: array_slice ( array $array , int $offset [, int $length [, bool $preserve_keys ]] ) array_slice() 返回根据 offset 和 length 参数所指定的 array 数组中的一段序列. 如果 offset 非负,则序列将从 array 中的此偏移量开始.如果 offset 为负,则序列将从 array 中距离末端这么远的地方开始. 如果给出了 length 并且为正,则序列中

  • 深入PHP获取随机数字和字母的方法详解

    第一种方法 复制代码 代码如下: <?php $FileID=date("Ymd-His") . '-' . rand(100,999); //$FileID为   20100903-132121-908   这样的的随机数?> 第二种方法 复制代码 代码如下: <?phpfunction randomkeys($length) {    $returnStr='';    $pattern = '1234567890abcdefghijklmnopqrstuvwxy

  • php中实现获取随机数组列表的自定义函数

    贴一段代码,在php中获取随机数组 不用多说,直接贴代码,php中的array_rand很变态,突破了正常人的理解,繁琐 function create_random_ids( $min,$max,$limited ) { $_base_ids = range($min,$max); $_temp_key = array_rand ($_base_ids,min(count($_base_ids),$limited+10)); //拼接 $ids = array(); for ($x=0; $x

  • php获取随机数组列表的方法

    本文实例讲述了php获取数组中随机数组的实例程序,分享给大家供大家参考.具体实现方法如下: 不用多说,直接贴代码,php中的array_rand很变态,突破了正常人的理解,非常繁琐 例1: 复制代码 代码如下: function create_random_ids( $min,$max,$limited ) {     $_base_ids = range($min,$max);     $_temp_key = array_rand ($_base_ids,min(count($_base_i

  • php获取一定范围内取N个不重复的随机数

    本文实例讲述了php获取一定范围内取N个不重复的随机数的方法.分享给大家供大家参考,具体如下: //range 是将1000到9999 列成一个数组 $numbers = range (1000,9999); //shuffle 将数组顺序随即打乱 shuffle ($numbers); //array_slice 取该数组中的某一段 $result = array_slice($numbers,0,3); print_r($result); 运行结果为: Array ( [0] => 9767

  • php随机获取金山词霸每日一句的方法

    本文实例讲述了php随机获取金山词霸每日一句的方法.分享给大家供大家参考.具体实现方法如下: header('Content-Type:text/html; charset=utf-8'); $nowyear=date("Y"); $nowmouth = date('m'); $nowday = date('d'); $date = mt_rand("2012",$nowyear)."-".mt_rand("1",$nowmo

随机推荐