Поиск в txt файле, помогите определить номер строки.

Enthusiast

Новичок
Поиск в txt файле, помогите определить номер строки.

Делаю поиск по файлу таким образом
PHP:
if (strpos(file_get_contents("file.txt"), "find")) echo "Есть такой!";  else echo "Нет такого";
Теперь вопрос каким образом можно определить на какой строке был найдено "find"?
 

Enthusiast

Новичок
Автор оригинала: zerkms
substr_count()
Делаю
PHP:
$pos=strpos(file_get_contents("file.txt"), "find");
if ($pos) echo "Есть такой!";  else echo "Нет такого";
echo "<br>---".substr_count($pos)."---<br>";
непомогло...
ничего не выводит
 

zerkms

TDD infected
Команда форума
Enthusiast
потому что нужно не просто вызвать функцию, а осмысленно передать в неё параметры

1. phpfaq.ru/debug - потому что твой код даже не будет интерпретироваться
2. php.net/substr_count - чтобы почитать о том, что это за функция, и что ей нужно
3. номер строки - это число символов перевода строки в интервале от 0 до "найденная позиция" + 1
 

mity

Новичок
Что то в роде этого
PHP:
$f=file("file.txt");
foreach ($f as $num => $str){
  if(strpos($str, "find")!==false){
    echo "Find in line ".($num+1)." ";
   //если нужно только номер первой строчки то break();
	 }
 }
 

Вурдалак

Продвинутый новичок
Re: Поиск в txt файле, помогите определить номер строки.

Что-то вроде этого
PHP:
function searchLine($filename, $s)
{
    $line = false;

    $fh = fopen($filename, 'rb');

    for($i = 1; ($t = fgets($fh)) !== false; $i++) {
        if( strpos($t, $s) !== false ) {
            $line = $i;
            break;
        }
    }

    fclose($fh);

    return $line;
}
:)
 

Enthusiast

Новичок
Автор оригинала: mity
Что то в роде этого
PHP:
$f=file("file.txt");
foreach ($f as $num => $str){
  if(strpos($str, "find")!==false){
    echo "Find in line ".($num+1)." ";
   //если нужно только номер первой строчки то break();
	 }
 }
спасибо помогло, а более быстрого способа нет?
Без
PHP:
$f=file("file.txt");
а то файл у меня 40 мб
 

Вурдалак

Продвинутый новичок
Enthusiast
Я бы не стал спорить что именно быстрее, но мой вариант адекватнее.
 

mity

Новичок
с такими файлами надо аккуратно работать, а то памяти может и не хватит
вариант fgets с этой точки зрения безопасен и наверное быстрее
 
Сверху