[英]PHP Scandir returns extra periods
所以我正在嘗試構建一個掃描目錄並返回隨機圖像以用作背景的腳本。
php看起來像這樣:
$dir = "views/img/bg/";
$dh = opendir($dir);
while (false !== ($filename = readdir($dh))) {
$files[] = $filename;
}
$random_key = array_rand($files, 1);
$random = $files[$random_key];
然后我只是使用一些簡單的jquery將圖像作為背景附加:
<script>
$(document).ready(function(){
$("body").css( "background" , "url(http://'.$url_root.'/views/img/bg/'.$random.'), center center" );
});
</script>
一切正常,但背景文件夾中所有圖像的數組似乎都返回了像“。”這樣的東西。 或者'..'而不是每隔一段時間的圖像名稱。 我不知道發生了什么 - 任何想法?
'' 並為當前和父目錄返回'..'。 你可以過濾它們:
while (false !== ($filename = readdir($dh))) {
if ($filename != '.' && $filename != '..')
$files[] = $filename;
}
使用glob()
以便過濾文件。
$files = glob('views/img/bg/*.jpg');
$random = $files[array_rand($files)];
由於您指定*.jpg
, $files
僅包含JPG文件,您無需刪除.
和..
項目。
為什么不使用正則表達式? 這樣它可以捕獲任何數量的時期。 (即“。”,“..”,“......”等。)
while (false !== ($filename = readdir($dh))) {
if(!preg_match('/^\.*$/',$filename)){
$files[] = $filename;
}
$dh = opendir("c:\");
while (false !== ($filename = readdir($dh))) {
if ($filename != '.' && $filename != '..')
$files[] = $filename;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.