0

问题:

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

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

预期输出:

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

附加信息:

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

问题:

  1. PHP中用于扫描行的相关函数有哪些?
  2. PHP中检测字符/的最后出现的相关函数是什么?

注意:

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

4

2 回答 2

1

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

方法 1 - 使用fopen()and 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 的一部分,该部分从最后一次出现 needle 开始,一直到 haystack 结束。

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

希望这可以帮助!

于 2013-10-19T10:11:48.513 回答
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>";
?>
于 2013-10-19T11:02:04.837 回答