猿问

如果变量包含单词,则显示它并获取行号

所以我试图检查“如果服务器上的文本文件包含单词,显示它并显示他的行号”但我只知道如何检查“如果文本文件包含单词”。有人有建议怎么做吗?我看了很多教程,但有关于本地文本文件的。


现在我只有这个功能


   function readStrLine($str, $n) {

    $lines = explode(PHP_EOL, $str);

    return $lines[$n-1];

}

但我需要行号。


例如,我在我的服务器上保存了文本文件。examplesite.com/file.txt内容如下:


 ABCDEF

 123456

 QWERTY

现在程序读取内容并检查是否包含单词。但是我需要这个词所在的这一行的编号。


元芳怎么了
浏览 124回答 1
1回答

翻过高山走不出你

例子:<?php$desiredWord = 'apple';$fileString = file_get_contents('asd.txt');$lines = explode(PHP_EOL, $fileString);$results = [];foreach ($lines as $lineNumber => $line) {&nbsp; &nbsp; if (strpos($line, $desiredWord) !== false) {&nbsp; &nbsp; &nbsp; &nbsp; $results[] = ($lineNumber + 1) .":{$line}";&nbsp; &nbsp; }}foreach ($results as $result) {&nbsp; &nbsp; echo '<pre>' . print_r($result, true) . '</pre>';}输入文件内容:appleasdfsdfvswerwerwerllllhhheehehthere is an apple on the treethe tree does not fall far from it's apple输出:1:apple7:there is an apple on the tree8:the tree does not fall far from it's apple您可以使用 foreach 遍历这些行。该$lineNumber键包含您当前正在阅读的行索引,并且$line是当前行的字符串。explode 函数将从 0 开始索引您的数组,因此当您读取它时第一行索引将为 0。这就是这一行中的 + 1 的原因:$results[] = ($lineNumber + 1) .":{$line}";您if (strpos($line, $desiredWord) !== false)正在检查是否在给定行中找到所需的单词。如果你只想要一个结果,你可以在这里返回,但如果你想收集所有可以找到这个词的行,那么你可以像这样将找到的行存储在$results最后,您可以使用第二个 foreach 或任何其他方式检查结果 - 取决于您的实施。
随时随地看视频慕课网APP
我要回答