[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Поиск фразы в тексте и определение строки
KaFFa
Всем привет,
Дан файл с текстом, нужно определить номер строки в которой содержится заданная фраза/слово?
подскажите, как это реализовать?
Invis1ble
читать файл построчно к примеру

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

KaFFa
Цитата (Invis1ble @ 16.06.2015 - 21:55)
читать файл построчно к примеру

если в файле больше 3000 строк, он ведь будет долго искать)
есть еще варианты?
AllesKlar
Цитата (KaFFa @ 16.06.2015 - 20:01)
Цитата (Invis1ble @ 16.06.2015 - 21:55)
читать файл построчно к примеру

если в файле больше 3000 строк, он ведь будет долго искать)
есть еще варианты?

ну, секунд 0,5 будет искать. Это долго?
И то, при условии, что искомое слово будет в последней строке.

_____________
[продано копирайтерам]
Valick
Цитата (KaFFa @ 16.06.2015 - 21:01)
есть еще варианты?

отказаться от обычных файлов в пользу БД

_____________
Стимулятор ~yoomoney - 41001303250491
Placido
$haystack = file_get_contents('filename.txt');
$needle = 'yourtext';
echo ($length = strpos($haystack, $needle)) ? substr_count($haystack, "\n", 0, $length) + 1 : 'not found';
Invis1ble
у ТС изначально было написано что-то вроде "большой файл"

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Placido
Если файл действительно большой ( "> 3000 строк" ни о чем не говорит - кто знает, какой там объем), то тогда да, читать построчно.
KaFFa
Цитата (Placido @ 16.06.2015 - 23:16)
$haystack = file_get_contents('filename.txt');
$needle = 'yourtext';
echo ($length = strpos($haystack, $needle)) ? substr_count($haystack, "\n", 0, $length) + 1 : 'not found';

Спасибо большое user posted image
AllesKlar
Цитата (KaFFa @ 16.06.2015 - 23:22)
Цитата (Placido @ 16.06.2015 - 23:16)
$haystack = file_get_contents('filename.txt');
$needle = 'yourtext';
echo ($length = strpos($haystack, $needle)) ? substr_count($haystack, "\n", 0, $length) + 1 : 'not found';

Спасибо большое user posted image

$lorem = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Immo videri fortasse. Quae animi 
affectio suum cuique tribuens atque hanc, quam dico. Tu autem inter haec tantam multitudinem
hominum interiectam non vides nec laetantium nec dolentium? Qua tu etiam inprudens utebare non
numquam. Duo Reges: constructio interrete. Non semper, inquam; Qui ita affectus, beatum esse
numquam probabis; '
;
$i = 0;
$size = 0;
$fp = fopen('loremipsum.txt', 'w');

while( $size < 1024*1024*500 )
{
$i++;
$size += fwrite($fp, $lorem . ' lorem' . $i . "\n");
}

fclose($fp);

$needle = 'lorem' . $i;


$haystack = file_get_contents('loremipsum.txt');
echo ($length = strpos($haystack, $needle)) ? substr_count($haystack, "\n", 0, $length) + 1 : 'not found';

Удачи в дебаге.

_____________
[продано копирайтерам]
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.