需要在文本文件匹配字符串中获取行号

时间:2011-02-07 21:15:46

标签: php

我需要使用PHP获取文本文件的行号。我需要的是“想要这条线”。

我尝试使用file()将文件行放入数组并使用array_search()进行搜索,但不会返回行号。在这个例子中,我需要返回3作为行号。

$file = file("file.txt");
$key = array_search("WANT", $file);
echo $key;

文字档案:

First Line of Code
Some Other Line
WANT THIS LINE
Last Line

2 个答案:

答案 0 :(得分:5)

array_search()正在寻找完全匹配。您需要循环遍历数组条目以查找部分匹配

$key = 'WANT';
$found = false;
foreach ($file as $lineNumber => $line) {
    if (strpos($line,$key) !== false) {
       $found = true;
       $lineNumber++;
       break;
    }
}
if ($found) {
   echo "Found at line $lineNumber";
}

答案 1 :(得分:3)

这比将文件加载到数组中的内存效率更高

foreach (new SplFileObject('filename.txt') as $lineNumber => $lineContent) {
    if(trim($lineContent) === 'WANT THIS LINE') {
        echo $lineNumber; // zero-based
        break;
    }
}

如果您只想搜索单词的某些部分,请替换

if(trim($lineContent) === 'WANT THIS LINE') {

if (FALSE !== strpos($lineContent, 'WANT')) {