PHP 獲取目錄下的圖片并隨機(jī)顯示的代碼
更新時(shí)間:2009年12月28日 15:09:54 作者:
從一個(gè)目錄里獲取某類型文件的清單(用在WEB的話一般是jpg/gif/png)->通過隨機(jī)函數(shù)選一個(gè)圖片->輸出代碼。
當(dāng)時(shí)想做一個(gè)隨機(jī)更換背景圖片的功能,用JavaScript寫的話,程序流程應(yīng)該是:建立一個(gè)圖片數(shù)組->隨機(jī)選擇數(shù)組里其中一個(gè)值->生成樣式并寫入body標(biāo)簽。
可是用JS做的話,有以下缺點(diǎn):
1.萬一瀏覽器禁用了JS的話就失效了,而且寫代碼是需要考慮兼容性。
2.維護(hù)比較麻煩,圖片的位置都存放在數(shù)組里。
于是我提議用PHP處理,可是我和她對(duì)PHP都是半桶水的,一時(shí)之間也想不出怎么做。今天時(shí)運(yùn)高,看到一個(gè)PHP隨機(jī)顯示目錄下圖片的源碼,學(xué)習(xí)一下,并分享之。
先看看原理:從一個(gè)目錄里獲取某類型文件的清單(用在WEB的話一般是jpg/gif/png)->通過隨機(jī)函數(shù)選一個(gè)圖片->輸出代碼。
PHP代碼如下:
$imglist='';
//用$img_folder變量保存圖片所在目錄,必須用“/”結(jié)尾
$img_folder = "images/tutorials/";
mt_srand((double)microtime()*1000);
//使用目錄類
$imgs = dir($img_folder);
//檢查目錄下是否有圖片,并生成一個(gè)清單
while ($file = $imgs->read()) {
if (eregi("gif", $file) || eregi("jpg", $file) || eregi("png", $file))
$imglist .= "$file ";
} closedir($imgs->handle);
//把清單里的項(xiàng)都放到一個(gè)數(shù)組里
$imglist = explode(" ", $imglist);
$no = sizeof($imglist)-2;
//生成一個(gè)介于0和圖片數(shù)量之間的隨機(jī)數(shù)
$random = mt_rand(0, $no);
$image = $imglist[$random];
//輸出結(jié)果
echo '<img src="'.$img_folder.$image.'" border="0/" alt="" />';
如果要通過這個(gè)函數(shù)變換頁面背景的話,可以把最后一句改為:
echo '<body style="background-image:'.$img_folder.$image.'>';</body>
并用整段程序替換<body>標(biāo)簽。
如果需要多次調(diào)用此程序的話,可以寫成一個(gè)函數(shù),各位按需要改寫。
總結(jié)
用PHP的方法來輸出隨機(jī)圖片的好處是:
1.維護(hù)簡單,只需要控制目錄里圖片的數(shù)量。
2.可以自定義文件類型,只要你有需要,改成隨機(jī)輸出一個(gè)Flash也行的
3.可以自定義輸出結(jié)果,換句話說,用在什么地方都行了
4.改寫成函數(shù)后功能更強(qiáng)大
可是用JS做的話,有以下缺點(diǎn):
1.萬一瀏覽器禁用了JS的話就失效了,而且寫代碼是需要考慮兼容性。
2.維護(hù)比較麻煩,圖片的位置都存放在數(shù)組里。
于是我提議用PHP處理,可是我和她對(duì)PHP都是半桶水的,一時(shí)之間也想不出怎么做。今天時(shí)運(yùn)高,看到一個(gè)PHP隨機(jī)顯示目錄下圖片的源碼,學(xué)習(xí)一下,并分享之。
先看看原理:從一個(gè)目錄里獲取某類型文件的清單(用在WEB的話一般是jpg/gif/png)->通過隨機(jī)函數(shù)選一個(gè)圖片->輸出代碼。
PHP代碼如下:
復(fù)制代碼 代碼如下:
$imglist='';
//用$img_folder變量保存圖片所在目錄,必須用“/”結(jié)尾
$img_folder = "images/tutorials/";
mt_srand((double)microtime()*1000);
//使用目錄類
$imgs = dir($img_folder);
//檢查目錄下是否有圖片,并生成一個(gè)清單
while ($file = $imgs->read()) {
if (eregi("gif", $file) || eregi("jpg", $file) || eregi("png", $file))
$imglist .= "$file ";
} closedir($imgs->handle);
//把清單里的項(xiàng)都放到一個(gè)數(shù)組里
$imglist = explode(" ", $imglist);
$no = sizeof($imglist)-2;
//生成一個(gè)介于0和圖片數(shù)量之間的隨機(jī)數(shù)
$random = mt_rand(0, $no);
$image = $imglist[$random];
//輸出結(jié)果
echo '<img src="'.$img_folder.$image.'" border="0/" alt="" />';
如果要通過這個(gè)函數(shù)變換頁面背景的話,可以把最后一句改為:
復(fù)制代碼 代碼如下:
echo '<body style="background-image:'.$img_folder.$image.'>';</body>
并用整段程序替換<body>標(biāo)簽。
如果需要多次調(diào)用此程序的話,可以寫成一個(gè)函數(shù),各位按需要改寫。
總結(jié)
用PHP的方法來輸出隨機(jī)圖片的好處是:
1.維護(hù)簡單,只需要控制目錄里圖片的數(shù)量。
2.可以自定義文件類型,只要你有需要,改成隨機(jī)輸出一個(gè)Flash也行的
3.可以自定義輸出結(jié)果,換句話說,用在什么地方都行了
4.改寫成函數(shù)后功能更強(qiáng)大
您可能感興趣的文章:
- php+mysql實(shí)現(xiàn)數(shù)據(jù)庫隨機(jī)重排實(shí)例
- PHP隨機(jī)獲取未被微信屏蔽的域名(微信域名檢測(cè))
- php隨機(jī)獲取金山詞霸每日一句的方法
- php 從指定數(shù)字中獲取隨機(jī)組合的簡單方法(推薦)
- php獲取指定數(shù)量隨機(jī)字符串的方法
- php獲取一定范圍內(nèi)取N個(gè)不重復(fù)的隨機(jī)數(shù)
- php 利用array_slice函數(shù)獲取隨機(jī)數(shù)組或前幾條數(shù)據(jù)
- php中實(shí)現(xiàn)獲取隨機(jī)數(shù)組列表的自定義函數(shù)
- php獲取四位字母和數(shù)字的隨機(jī)數(shù)的實(shí)現(xiàn)方法
- php獲取隨機(jī)數(shù)組列表的方法
- 深入PHP獲取隨機(jī)數(shù)字和字母的方法詳解
- PHP實(shí)現(xiàn)在數(shù)據(jù)庫百萬條數(shù)據(jù)中隨機(jī)獲取20條記錄的方法
相關(guān)文章
PHP棧的定義、入棧出棧方法及基于堆棧實(shí)現(xiàn)的計(jì)算器完整實(shí)例
這篇文章主要介紹了PHP棧的定義、入棧出棧方法及基于堆棧實(shí)現(xiàn)的計(jì)算器,結(jié)合實(shí)例形式較為詳細(xì)的分析了php定義與使用棧的基本方法,并結(jié)合完整實(shí)例形式給出了php基于堆棧實(shí)現(xiàn)高級(jí)計(jì)算器功能的相關(guān)操作技巧,需要的朋友可以參考下2017-11-11php strlen mb_strlen計(jì)算中英文混排字符串長度
在php中常見的計(jì)算字符串長度的函數(shù)有:strlen和mb_strlen,下面是對(duì)這兩個(gè)函數(shù)的比較說明(編碼方式UTF8)2009-07-07淺析php面向?qū)ο髉ublic private protected 訪問修飾符
本篇文章是對(duì)php面向?qū)ο髉ublic private protected 訪問修飾符進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06啟用Csrf后POST數(shù)據(jù)時(shí)出現(xiàn)的400錯(cuò)誤
這篇文章主要介紹了啟用Csrf后POST數(shù)據(jù)時(shí)出現(xiàn)的400錯(cuò)誤的相關(guān)資料,需要的朋友可以參考下2015-07-07PHP字符串長度計(jì)算 - strlen()函數(shù)使用介紹
在PHP中,函數(shù)strlen()返回字符串的長度,strlen()函數(shù)返回字符串所占的字節(jié)長度,一個(gè)英文字母、數(shù)字、各種符號(hào)均占一個(gè)字節(jié),它們的長度均為12013-10-10PHP中對(duì)數(shù)組的一些常用的增、刪、插操作函數(shù)總結(jié)
這篇文章主要介紹了PHP中對(duì)數(shù)組的一些常用的增、刪、插操作函數(shù)總結(jié),數(shù)組的操作是PHP入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-11-11