2011-02-07 98 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')) { 
相關問題