2012-01-28 30 views
0

我有一個目錄「文件」在我的網站空間。在這個目錄中有png-images,它可能會頻繁更改。自動創建一個列出目錄中所有圖像的json文件?

文件名需要存儲在json文件中。

是否有辦法來自動創建一個JSON文件,該文件列出了下面的方法目錄中的所有圖片:

art_showWindow({"art":[ 
{"href":"http://www.domain.example/files/art_noveau_1.png","title":"Art Noveau 1"}, 
{"href":"http://www.domain.example/files/art_noveau_5.png","title":"Art Noveau 5"}, 
{"href":"http://www.domain.example/files/art_noveau_23.png","title":"Art Noveau 23"}, 
]}); 

標題當然可以僅僅是文件名的重複,如果上面太難。

這是不是有可能?

在此先感謝您的幫助。

托馬斯

回答

1

據我所知,目前還沒有所做的正是這一個神奇的本地PHP函數,雖然它不會令人驚奇。

由於爲您編寫腳本不會幫助您學到很多東西,因此我認爲最好指出一些工具來應對此挑戰。

首先,您想要查找目錄中的所有PNG文件;要列出目錄中的所有文件(和目錄),請使用scandir($directory)。從那裏開始,你可以使用一個foreach循環遍歷返回的數組,並且只將PNG文件粘貼到一個新的數組中。

由於scandir的輸出不會使文件和目錄可辨,因此您可能需要在結果上運行is_dir以確保僅獲取文件。

然後,您可以使用pathinfo來檢索當前文件的擴展名和基本名(文件名不帶擴展名,在pathinfo的輸出中標記爲「文件名」)。您將需要擴展名來確定該文件是否爲PNG(因此需要添加到您的新陣列)。

一旦你迭代了scandir數組並且創建了一個包含PNG文件名的數組,你就可以開始構建最終的數組。您需要啓動另一個foreach循環,其中您將「http://www.domain.example/files/」添加到文件名中,並執行一些魔術將文件名轉換爲標題。你想陣列進行結構是這樣的:

$art = array( 
    array(
     'href' => $full_url, 
     'title' => $title 
    ), 
    array(
     'href' => $full_url, 
     'title' => $title 
    ), 
    // etc 
); 

拿到冠軍,我想這個看似複雜的一行去:

$title = ucwords(// Give words an upper case first letter 
    str_replace('_', ' ', //replace underscores by spaces 
     substr($filename, 0, (strlen($filename) - 4) //strip .png extension 
    ) 
); 

一旦foreach循環完成後,你」將有一個完全填充藝術陣列。將此轉換爲JSON,您使用簡單json_encode,就像這樣:

$output = json_encode(array('art' => $art)); 

你提到你想將其保存爲一個JSON文件;你確定你不只是想讓PHP輸出JSON嗎?

無論哪種方式,保存文件,很容易,file_put_contents將完成這項工作。

如果您只是希望PHP輸出它,您需要將Content-Type HTTP標頭設置爲application/json:header('Content-Type: application/json');,然後只需回顯$輸出。

希望有幫助!

(而且我意識到,這需要花費更多的精力,而不僅僅是寫一小段代碼,但至少您仍然需要做一些思考工作才能完成它。祝您好運!

相關問題