我需要使用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
答案 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')) {