Php 若变量包含word,则显示它并获取行号

Php 若变量包含word,则显示它并获取行号,php,Php,所以我试图检查服务器上的文本文件是否包含word,显示它并显示他的行号,但我只知道如何检查文本文件是否包含word。有人建议怎么做吗?我看过很多教程,但也有关于本地文本文件的 现在我只有这个函数 function readStrLine($str, $n) { $lines = explode(PHP_EOL, $str); return $lines[$n-1]; } 但我需要电话号码 例如,我在服务器上保存了文本文件。examplesite.com/file.txt与

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

现在我只有这个函数

   function readStrLine($str, $n) {
    $lines = explode(PHP_EOL, $str);
    return $lines[$n-1];
}
但我需要电话号码

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

 ABCDEF
 123456
 QWERTY
目前,程序读取内容并检查是否有包含单词的内容。但是我需要这个单词所在的行的编号。

示例:

<?php

$desiredWord = 'apple';

$fileString = file_get_contents('asd.txt');

$lines = explode(PHP_EOL, $fileString);

$results = [];
foreach ($lines as $lineNumber => $line) {
    if (strpos($line, $desiredWord) !== false) {
        $results[] = ($lineNumber + 1) .":{$line}";
    }
}

foreach ($results as $result) {
    echo '<pre>' . print_r($result, true) . '</pre>';
}
输出:

你可以用foreach通过这些线路。$lineNumber键包含当前正在读取的行索引,$line是当前行的字符串。explode函数将从0为数组编制索引,因此读取数组时,第一行索引将为0。这就是为什么这行中的+1:$results[]=$lineNumber+1.:{$line}

使用if strpos$行,$desiredWord!==false检查是否在给定行中找到所需的单词。如果您只需要一个结果,您可以在这里返回,但是如果您希望收集可以找到单词的所有行,那么您可以将找到的行像这样存储在$results中

最后,您可以使用第二个foreach或任何其他方法检查结果,具体取决于您的实现

apple
asdfsdf
vs
werwerwer
llll
hhheeheh
there is an apple on the tree
the tree does not fall far from it's apple
1:apple

7:there is an apple on the tree

8:the tree does not fall far from it's apple