2011-02-07 197 views
3

行号我需要使用PHP的文本文件的行号。我需要的线是“想要这条线”。需要得到在文本文件中匹配的字符串

我尝试使用文件()将在数组中的文件线条和使用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

这不是`array_search`的工作方式。你需要`array_search(“希望此订单”,$文件);` – meagar 2011-02-07 21:21:52

回答

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"; 
} 
+0

感谢您的答复。我得到:警告:为foreach()提供了无效的参数。我把为$文件中的值在第一线 – SomeRandomDude 2011-02-07 21:33:33

+0

您是否正确读取文件到$文件?测试$文件!==虚假befor醚:循环...如果它是假的,那么它无法正确读取 – 2011-02-07 21:34:25

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')) { 
相关问题