Мне нужно получить номер строки текстового файла с помощью 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
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"; }
Это должно быть более эффективным с точки зрения памяти, чем загрузка файла в массив
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')) {