2012-11-18 135 views
0

我有一個名爲Se7enPlug.dspl的文本文件。在這個文件中我只有一個行文字,格式如下:如何用PHP讀取文本文件?

text1,text2,text3 

我需要讀取這個文件,並返回這樣的事情:

public function rconGetNextMap() { 

    $myFile = "E:\mw3-server\admin\Se7enPlug.dspl"; 
    $fh = fopen($myFile, 'r'); 
    $theData = fread($text1,$text2,$text3); 
    fclose($fh); 
    echo $theData; 

    if ($theData) { 

     $next = array("map" => $text1, "gametype" => $text2, 0=>$text1, 1=>$text2); 
    } 
    elseif (!$theData)) { 

     $next = array("map" => "Unknown", "gametype" => "Unknown", 0=>"Unknown",1=>"Unknown"); 
    } 
    return $next; 
} 

正如你看到它有很多問題。我該如何解決它?

+1

[fgetcsv()](http://php.net/manual/en/function.fgetcsv.php )將是一個很好的起點 – 2012-11-18 21:07:12

+0

我可以從你那裏得到解決我的鱈魚的請求嗎? – user1743737

+2

你的魚如何破碎? – 2012-11-18 21:16:54

回答

3

這將在您的文本文件中讀取與所述第一和第二值保存到數組

<?php 

    $myFile = "E:\mw3-server\admin\Se7enPlug.dspl"; 
    $fh = fopen($myFile, 'r'); 
    $theData = fgetcsv($fh,$delimiter = ','); 

    if ($theData) { 

     $next = array("map" => $theData[0], "gametype" => $theData[1]); 
    } 

?> 
1

更好地利用fgetcsv()作爲達貢指出:

public function rconGetNextMap() { 
    $myFile = '...'; 
    $handle = fopen($myFile, 'r'); 
    $retArray = array(
    'map' => 'Unknown', 
    'gametype' => 'Unkown', 
); 

    if (!$handle) { 
    return $retArray; 
    } 

    $data = fgetcsv($handle, 1000, ',', '"'); 

    if ($data !== false) { 
    $retArray['map'] = $data[0]; 
    $retArray['gametype'] = $data[1]; 
    } 
    fclose($handle); 
    return $retArray; 
} 

我已刪除從輸出陣列的兩個數值指標。我不會推薦他們,因爲他們代表了冗餘數據。但你可以輕鬆地添加它們。

+0

@KingCrunch:你爲什麼要刪除我最後的句子,並且可以爲最後一次編輯添加一個參考(如果第三個參數需要,需要第四個參數)? – ComFreek

+0

沒有。也許你添加了它,而我編輯了我的編輯?參考是:嘗試一下;)(更新:也許它是固定的5.4?不能再現它了。也許你可以忽略它) – KingCrunch

+0

@KingCrunch我無法使用PHP 5.4.7重現它(目前升級到5.4.8)。但它不會傷害;) – ComFreek