2012-11-06 18 views
1

我可能會咬掉比這更多的東西,但希望你們可以幫忙。這是故事。通過php導入一個txt分號分隔的文件並轉換成一種新格式

我有一個用戶生成的.txt文件,通過我安裝在我的網站上的日曆模塊來定期更新。我需要能夠訪問某些數據來阻止日曆中保留的日期。首先,這是日曆.txt文件的語法。爲了使其更具可讀性,我就把每個數據段在其自己的行:

2012-11-08;;1;;0, 
2012-11-09;;1;;0, 
2012-11-10;;1;;0, 
2012-11-13;;2;;0, 
2012-11-14;;2;;0, 
2012-12-05;;1;;150, 
2012-12-06;;1;;150 

這裏的情況變得有些複雜,但。我可以使用一個小小的PHP腳本輕鬆導入到我的CMS中。但我只需要上述提要中的某些數據,並且我需要以與當前正在輸出的格式稍微不同的格式來組織它。我在另一個日曆上使用jquery datepicker來顯示訪客的可用性,並且我有一個JS腳本使用這種格式阻止日期。

var disabledDays = [ 
    "11-21-2012", 
    "12-17-2012", 
    "12-02-2012", 
    "01-03-2013", 
    "01-04-2013", 
    "01-05-2013" 
]; 

在具有.txt文件的任何項目「2」或「0」之後的日期是「預訂」或「不可用」的日期,分別與需要被包括在JS飼料上述;即; 2012-11-13 ;; 2 ;; 0,

上面是0或150的.txt文件中的最終數字可以完全丟棄,因爲這是價格並且與JS無關日曆。最後一點是.txt文件中的日期順序與我在.JS文件(我將使用PHP創建)中需要它的順序略有不同。

我確信所有上述都可以使用PHP,但我正在運行的圈子試圖讓這個工作。有人有主意嗎?

+1

我有很多想法,但更重要的是 - 問題是什麼? –

+0

嘿約翰,請編輯問題以在此添加您想要的內容。 – Amar

回答

1

如果我理解正確,你有日期格式和訪問文本文件的數據的麻煩,你總是可以使用爆炸函數正確分離元素,之後是迭代通過元素的問題,像:

$string = '2012-11-08;;1;;0, 
2012-11-09;;1;;0, 
2012-11-10;;1;;0, 
2012-11-13;;2;;0, 
2012-11-14;;2;;0, 
2012-12-05;;1;;150, 
2012-12-06;;1;;150'; 

$element = explode(",", $string); 
$array = array(); 
foreach($element as $row){ 
    array_push($array, explode(";", $row)); 
} 

foreach($array as $date){ 
    $newdate = new DateTime($date[0]); 
    $newdate = $newdate->format('m-d-Y'); 
    echo $newdate; 
    if($date[2] == 2) 
     //Do your processing 
     echo "Book"; 

}

有可能是一個更好的解決方案,更快,我只是想指出,你如何與PHP的做到這一點。

相關問題