使用 PHP 查找文本文件中最后出现的行


Find last occurrence of line in a text file using PHP

问题:

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

  • /视角:皮肤覆盖智能腿
  • /以上是提供数据文件默认透视的一种方法。
  • 腿 皮肤 重量 智力 速度/纬度/lon/url/info

预期产出:

包含关键字的数组:腿、皮肤套、体重、智力、速度

附加信息:

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

问题:

  1. PHP 中有哪些相关函数可用于扫描线条?
  2. PHP 中有哪些相关函数来检测上次出现的字符/?

通知:

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

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

方法 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 手册:

此函数返回大海捞针的部分,该部分从最后一次出现针开始,一直到干草堆的末尾。

您可以将其与strpos()substr() 和其他字符串操作函数结合使用,以检索所需的文本。

希望这有帮助!

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

<?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>";
?>