0

我有一个简单的文本文件(见下文)。

abc|1356243309
zzz|1356239986
yyy|1356242423

我想简单地提取 | 之前的所有名称。所以输出应该是这样的:

abc
zzz
yyy

下面是我尝试使用的字符串。我也尝试过 file('visitornames.txt') 等。我不确定我做错了什么:(。尝试了很多东西。

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

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

}

没有错误,但它根本没有正确执行。

4

2 回答 2

5

我会使用文件函数而不是 file_get_contents。它将文件作为数组返回,其中每一行都是自己的项目。然后你可以 foreach 文件内容数组。您正在寻找的变量是该行的第一部分,这就是您可以回显 $names[0] 的原因。

$file = file('visitornames.txt');
foreach ($file AS $line) {
    $names = explode('|', $line);
    echo $names[0] . '<br/>';
}
于 2012-12-23T06:39:30.980 回答
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";
}
于 2012-12-23T06:44:58.443 回答