Поиск в большом TXT на PHP

jcrush
На сайте с 04.07.2004
Offline
371
4448

Помогите скриптик написать, сам я не очень...

нужно:

поле ввода для поиска текстового значения и кнопка найти, файл метров 30.

нужно найти и если поиск верный вывести всю строку

» Блог (http://blog.stfw.ru/) - SEO-заметки. ДВчат: @dvchat (https://t.me/dvchat)
jcrush
На сайте с 04.07.2004
Offline
371
#1

попробовал так:

$text=file_get_contents("text.txt");
$word="искомое_слово";
preg_match_all("/.*?$word.*?\\./im",$text,$p);
foreach($p[0] as $v) echo "<li>$v";

если ввожу строку из 3-4 симвалов то поиск работает, если слово целиком из 6 и более то нет (((

Zlo_606ep
На сайте с 14.12.2006
Offline
129
#2

Попробуйте так (если в файле есть переносы строк, хотя можно и по точкам разделить), чтобы не грузить весь файл в память для регулярного выражения, если не поможет, тогда и файл нужно читать по частям


$fname='file.txt';
if (!file_exists($fname)) die ('Ошибка');
$fp = fopen ($fname, 'r');
$buffer = fread($fp, filesize($fname));
fclose ($fp);
$prev = 0;
$i=0;
$p=array();
while ($next = strpos($buffer,"\r\n",$prev+1))
{
$i++;
$a = substr($buffer, $prev+1, $next-$prev);
preg_match_all("/.*?$word.*?\\./im",$a,$p[]);
$prev = $next;
}
jcrush
На сайте с 04.07.2004
Offline
371
#3

не получается, пустой экран..

попробовал первый вариант с маленьким файлом в пару строк, вообще не ищит ((

jcrush
На сайте с 04.07.2004
Offline
371
#4

перенос строк есть, у меня какая то канитель с точками

поиск работает где есть точка... так не правильно

jcrush
На сайте с 04.07.2004
Offline
371
#5
preg_match_all("/n*?$word.*?\\n/im",$text,$p);

надо было так!

сенкс!

IQPartner
На сайте с 20.09.2007
Offline
138
#6

По-моему есть приятное решение: @Text Replacer

Когда нужно отыскать строку в каком-то тексте (или целой группе текстовых файлов) я запускаю именно ее. Вот что пишут на оф. сайте.

Утилита для поиска и/или замены многострочных фрагментов текста в файлах указанного каталога и вложенных папок.
С ее помощью не проблема изменить наименование класса в вашей программе или поменять шаблоны HTML страниц всего сайта. Больше не нужно запускать замену несколько раз, если изменяемые строки идут подряд - @Text Replacer умеет заменять абзацами!

Есть бесплатная версия: http://www.infortech.ru/products/others/tr/

С 2009-го меняю PayPal->WMZ за 8% (вывод с партнерок -7%) (/ru/forum/959037), Оплачу за вас PayPal за 0-3%. Слать Рaypal ТОЛЬКО на admin[/гаф-гаф\]israword.co.il - иначе это не я;

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий