使用PHP在文本文件中查找最后一行

时间:2013-10-19 08:48:45

标签: php arrays string lines

问题:

我有一个包含以下行的文本文件:

  • / Perspective:skincover intelligence legs
  • /以上是一种使用数据文件提供默认透视图的方法。
  • 腿部皮肤重量智力速度/ lat / lon / url / info

预期输出:

包含关键字的数组:leg,skincover,weight,intelligence,speed

其他信息:

应该忽略以斜杠开头的所有内容。

问题:

  1. PHP中用于扫描线的相关功能是什么?
  2. PHP中用于检测上次出现的相关函数是什么 字符/?
  3. 注意:

    我不是在寻找代码,只是关于最终会导致解决方案的相关PHP函数的建议。

2 个答案:

答案 0 :(得分:1)

对于阅读文件,您可以使用众多内置函数之一。

方法1 - 使用fopen()fgets()

$fh = fopen("myfile", "r");
while (!feof($fh)) {
   $line = fgets($fh);
   echo $line;
}
fclose($fh);

这些是在上面的代码中执行的步骤:

  • 打开文件
  • $fh是文件句柄并存储对文件本身的引用
  • while()条件会检查您是否已到达EOF(文件结束)
  • 只要while()条件评估为TRUE并打印$line
  • ,就会遍历每一行
  • 关闭文件

方法2 - 使用file()

您可以使用此功能将整个文件读入数组。它非常实用,是短文件的理想解决方案。此函数将返回由行分隔的字符串数组。

$arrayOfLines = file('myfile');

非常简单。现在,您可以简单地使用foreach循环遍历这些行并执行您想要的操作。

检测特定角色的最后一次出现:

有一个内置函数 - strrchr()

从PHP手册:

  

此函数返回haystack的一部分,该部分从最后一次出现的针开始,直到haystack结束。

您可以将其与strpos()substr()和其他string manipulation functions结合使用,以检索所需的文字。

希望这有帮助!

答案 1 :(得分:0)

这是我写的解决方案,不确定它是否是最优的解决方案。

<?php   
    $file = file('Creatures_rich.txt');

    foreach($file as $line_nums => $line)
    {       
        if (strpos($line, '/') == TRUE)
        {
            $target = explode("\t", trim($line));

            foreach ($target as $key => $value)
            {
                if (substr($value, 0, 1) != '/')
                {
                    $keywords[] = $value;
                }
            }           
            break;
        }
    }

    echo "<xmp>".print_r($keywords, true)."</xmp>";
?>