Как отыскать нужную строку в большом txt ?

KrotAnn

Новичок
Как отыскать нужную строку в большом txt ?

У меня очень большой txt файл 3Мб
Все записи в ковычках и разделены запятыми.
Я пытаюсь выбрать строку которая начинается символом 77057
PHP:
$stringtofind='77057';
$file=file('code.txt');
$c=count($file);
$c--;
for ($i=0; $i<=$c; $i++) {
    if((eregi($stringtofind, $file[$i]))
    and (strpos($file[$i], $stringtofind)==0)) {$line=$file[$i];}
}
print $file[12];
Вместо этого он выволит всё что имеет цифру 7.
Как сделать правильно? Как из этой строки вырезать запятые и ковычки чтобы массив состоящий только из слов ?
 

_RVK_

Новичок
KrotAnn
Я отформатировал и подсветил код. В следубщий раз постарайся позаботатся об этом самостоятельно. ок?

-~{}~ 10.01.06 17:51:

if((eregi($stringtofind, $file[$i]))
[m]strpos[/m]
[m]fgetcsv[/m]
 

KrotAnn

Новичок
Эти функции хороши потом...
Мне для начала нужно из пары тысяч строчек выбрать нужную, а уж потом вырезать символы и делить массив.

-~{}~ 10.01.06 18:24:

А нет!! усё работает! Т.е строку выбирает спасибо этоя глючу...
 

white phoenix

Новичок
uninside
Да. Просто непонятно зачем делать for, eregi, strpos когда всё решается одной строчкой.
 

KrotAnn

Новичок
Вопрос я пытаюсь из этой строки вырезать запятые и ковычки вот так:
for ($i=0; $i<=$c; $i++) {
if((eregi($stringtofind, $file[$i])) ){$line=$file[$i];}}
$regs = split(",",$line);
for ($a = 0; $a <= count($regs)-1; $a++) {
echo $regs[$a]."<br>";}
получаю:
"HARRIS"
"STANDARD"
Запятые отпадают, а как вырезать все ковычки ?
 

white phoenix

Новичок
Ты всё еще не отказался от eregi? Ведь я привел однострочный пример который работает быстрее твоего, а про красоту я молчу.
> $regs = split(",",$line);
Ужос!
 

KrotAnn

Новичок
Эта строка выдерает только запятые а мне нужно выдрать и ковычки!!!
Она выдерает или то или то а мне надо и то и другое!!!
 

_RVK_

Новичок
KrotAnn
Я же попросил форматировать текст. Уважай тех, кто тебе пытается помочь.
 

KrotAnn

Новичок
Кстати и бабочках: твой пример не работает, он ОЧЕНЬ долго думает, а потом прога выдаёт что выполнение заняло больше 30 сек и отрубает процесс.

-~{}~ 10.01.06 19:27:

Автор оригинала: _RVK_
KrotAnn
Я же попросил форматировать текст. Уважай тех, кто тебе пытается помочь.
Извиняюсь...
PHP:
$regs = split('","',$line); 
for ($a = 0; $a <= count($regs)-1; $a++) {
 echo $a," : ",$regs[$a]."<br>";}
 

white phoenix

Новичок
KrotAnn
> Эта строка выдерает только запятые а мне нужно выдрать и ковычки!!!
Обои через замочную скважину пытаешься клеить.
[m]str_replace[/m].
> твой пример не работает, он ОЧЕНЬ долго думает
Он работает никак не медленее чем твой.
 

KrotAnn

Новичок
Всё получилось так:
PHP:
$index = preg_replace('/"[^\s]/',' ', $regs[0]);
Работает конечно, но очень уж громоздко... Нельзя ли его переписать покороче и красивше?
 

white phoenix

Новичок
Что кароче и красивше? Всё что тебе нужно делается в одну строку.
> $index = preg_replace('/"[^\s]/',' ', $regs[0]);
Объясни мне неразумному зачем этот бред? В итоге будут одни пробелы и возможно табуляции.
 

KrotAnn

Новичок
У меня он в строке index выводит нулевой элемент массива без ковычек.
Т.е. было так:
0: "alem
1: numb
2: numb2
3: end"
Знаешь как лучше? Поделись я ламер и не претендую на мировое господство...
 

KrotAnn

Новичок
Это уже после того как их вырезали, было так:

0: "alem
1:,
2: numb
3:,
4: numb2
5:,
6: end"
 

white phoenix

Новичок
Скажи словами что нужно? Как я понимаю, найти строки в файле которые начинаются с '77057', это уже давал выше:
PHP:
$var = preg_grep('~^77057~',file('code.txt'));
var_dump($var);
Если надо убрать ковычки и запятые, то
PHP:
$var = explode('\n',str_replace(array(',','"'),array(),join('',preg_grep('~^77057~',file('code.txt')))));
var_dump($var);
Специально написал в одну строчку как и обещал.
 

KrotAnn

Новичок
ВСЁ !!! ОГРОМНОЕ ВАМ СПАСИБО!!!
Особая благодарность white phoenix!
Всё работает...
Аня.
 
Сверху