簡體   English   中英

PHP獲取最新文件路徑

[英]PHP Get Newest File Path

我正在使用以下內容將CSV轉換為JSON( https://gist.github.com/robflaherty/1185299 )。 我需要對其進行修改,以便代替使用確切的文件url路徑,而是將目錄中的最新文件url作為$ feed中的“源”。

任何幫助將是巨大的! 我嘗試使用在這里找到的代碼PHP:在目錄中獲取最新的文件添加 ,但是似乎無法弄清楚如何對其進行修改以使其起作用。

<?php
header('Content-type: application/json');

// Set your CSV feed
$feed = 'http://myurl.com/test.csv';

// Arrays we'll use later
$keys = array();
$newArray = array();

// Function to convert CSV into associative array
function csvToArray($file, $delimiter) { 
if (($handle = fopen($file, 'r')) !== FALSE) { 
$i = 0; 
while (($lineArray = fgetcsv($handle, 4000, $delimiter, '"')) !== FALSE) { 
  for ($j = 0; $j < count($lineArray); $j++) { 
    $arr[$i][$j] = $lineArray[$j]; 
  } 
  $i++; 
} 
fclose($handle); 
} 
return $arr; 
} 

// Do it
$data = csvToArray($feed, ',');

// Set number of elements (minus 1 because we shift off the first row)
$count = count($data) - 1;

//Use first row for names  
$labels = array_shift($data);  

foreach ($labels as $label) {
$keys[] = $label;
}

// Add Ids, just in case we want them later
$keys[] = 'id';

for ($i = 0; $i < $count; $i++) {
$data[$i][] = $i;
}

// Bring it all together
for ($j = 0; $j < $count; $j++) {
$d = array_combine($keys, $data[$j]);
$newArray[$j] = $d;
}

// Print it out as JSON
echo json_encode($newArray);

?>

這是一個很難回答的問題,因為沒有足夠的細節。 以下是一些需要回答的問題。

1)。 您是否正在創建正在讀取的csv文件? 如果是這樣,則只需確保要讀取的文件名為“ latest.csv”,然后在創建“ latest.csv”時檢查現有的“ latest.csv”並首先重命名/存檔。 然后,您的目錄包含存檔,但最新的始終是相同的名稱。

2)。 如果您不創建csv文件,則可能需要詢問csv文件的提供者,是否有一種方法可以識別最新文件,當然,如果它們正在提供文件,那么他們希望可以為所有人提供最新文件。飼料,並有這樣做的機制。

3)。 如果您不知道提供程序並且想猜測一下,請查看文件的命名方式並嘗試預測最新的文件。 例如,如果它們似乎包含月份和年份,則對預測的下一個最新文件執行file_exists()(如果可以)。 同樣,只是一種可能性。

根據您的評論,如果文件位於同一服務器上或在支持file功能的file系統上可訪問,則:

array_multisort(array_map('filemtime', $files=glob('/path/to/*.csv')), SORT_DESC, $files);
$newest = $files[0];

對於遠程訪問,您可以查看以下內容: 如何使用PHP在FTP上下載最新文件?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM