为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
元芳怎么了 2023-03-04 17:53:55
所以我试图检查“如果服务器上的文本文件包含单词,显示它并显示他的行号”但我只知道如何检查“如果文本文件包含单词”。有人有建议怎么做吗?我看了很多教程,但有关于本地文本文件的。现在我只有这个功能   function readStrLine($str, $n) {    $lines = explode(PHP_EOL, $str);    return $lines[$n-1];}但我需要行号。例如,我在我的服务器上保存了文本文件。examplesite.com/file.txt内容如下: ABCDEF 123456 QWERTY现在程序读取内容并检查是否包含单词。但是我需要这个词所在的这一行的编号。
查看完整描述

1 回答

?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

例子:


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

}

输入文件内容:


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

您可以使用 foreach 遍历这些行。该$lineNumber键包含您当前正在阅读的行索引,并且$line是当前行的字符串。explode 函数将从 0 开始索引您的数组,因此当您读取它时第一行索引将为 0。这就是这一行中的 + 1 的原因:$results[] = ($lineNumber + 1) .":{$line}";


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


最后,您可以使用第二个 foreach 或任何其他方式检查结果 - 取决于您的实施。


查看完整回答
反对 回复 2023-03-04
  • 1 回答
  • 0 关注
  • 123 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号