2014-06-19 26 views
0

我試圖從從www.groupsort.com不能正確地從一個.txt文件在PHP

下載的文本文件中讀取讀取的格式如下:

Name Rank Team 
Mike  1  Team 2 
Charlie 5  Team 1 
Joe  3  Team 1 
David 21  Team 3 

另外我不知道這是否相關,但是當我去微微這個文件時,它不會顯示明文,它只是一堆垃圾,但它是一個.txt文件。奇怪的?

所以我想獲取用戶名並將它們存儲在一個變量中。不應該像這樣的工作?

$file = "peopletomove.txt"; 

$fh = fopen($file,'r'); 
$MoveTSusers = array(); 


while (!feof($fh)) { 

    $line = fgets($fh); 
    echo $line."\n"; 

    $name = strpos($line, " "); 
    $name2 = substr($line, 0, $name); 
    echo $name2."\n"; 
+1

我肯定會來檢查編碼不僅.txt文件,但如果有一個在PHP的一個選項,以某種類型編碼的讀入。如果你在.txt文件中有UTF-8字符,並在ascii中讀入,則可能會產生垃圾。此外,如果文件是在Windows上創建的並在* nix系統上讀取的,則可能會在文本文件中留下其他字符。在pico中創建一個測試文件並將其作爲附加測試讀入,以確保問題出在文件而不是代碼上。 – NuclearPeon

+1

我正在使用測試文件,所以我認爲這可能是問題所在。 – Brock

回答

1

您有製表符分隔的值。因此,在分離標籤:

while(!feof($fh)) { 
    $line = trim(fgets($fh)); 
    if(!$line) continue; // blank line 
    list($name,$rank,$team) = explode("\t",$line); 
} 
+0

我試過了,它給了我未定義的偏移量。 – Brock

+0

你可以輸出'$ line's並告訴我在錯誤發生的哪一行(輸入)? –

+0

http://gyazo.com/8f37e2299e294fc74d158577ec233b82是我運行後得到的輸出。另外,第147行是list($ name,$ rank,$ team)= explode(「\ t」,$ line); – Brock