2012-12-23 36 views
0

我有一個簡單的文本文件(見下文)。功能爆炸簡單的文本文件

abc|1356243309 
zzz|1356239986 
yyy|1356242423 

我想簡單地提取之前的所有名字|。所以輸出應該是這樣的:

abc 
zzz 
yyy 

下面是我嘗試使用的字符串。我也試着文件(「visitornames.txt」)等。我不知道什麼即時做錯了:(。嘗試了很多東西。

$string = file_get_contents('visitornames.txt'); 
$names = explode('|', $string); 
foreach($names as $key) { 

echo $key . '"<br/>'; 

} 

沒有錯誤,但它根本沒有做正確。

回答

5

我會使用文件功能,而不是file_get_contents。它返回文件作爲數組,其中每一行都是自己的項目然後你可以foreach文件內容數組。你正在尋找的變量是行的第一部分,這就是爲什麼你只能回顯$ names [0]

$file = file('visitornames.txt'); 
foreach ($file AS $line) { 
    $names = explode('|', $line); 
    echo $names[0] . '<br/>'; 
} 
+0

1' file(...)'將爲每行創建一個數組(不包括換行符)。 'file_get_contents'將整個文件加載到一個變量(包括行結束符)中。這是正確的,但我會將變量名'$ string'更改爲更有意義的內容。 –

+0

優秀。在爆炸($名稱爲$行) – user1449369

+0

yep文件()似乎是這樣的。多謝你們! – user1449369

0

您可以提取文件的所有行,使用file函數,再取的每個第一部分中的爆炸並將其分配到的結果:

$names = array(); 
foreach (file('visitornames.txt') as $line) 
{ 
    list($names[]) = explode('|', $line, 2); 
} 

替代地有SplFileObject是類似於但可以更容易地從它延伸:

class Names extends SplFileObject 
{ 
    public function current() { 
     list($name) = explode('|', parent::current(), 2); 
     return $name; 
    } 
} 

$names = new Names('visitornames.txt'); 

foreach ($names as $name) 
{ 
    echo $name, "<br />\n"; 
}