Обработка текстового файла.

Ali

Новичок
Обработка текстового файла.

Совсем запутался подскажите.
Исходные данные:
есть текстовый файл вида
Код:
296633                 00       00000 171005 1253     20             9
       633             296504       00001 171005 1253  22                7
296633                 00       00001 171005 1253     21             9
       633             296504       00001 171005 1253  23                7
296633                 00       00001 171005 1253     22             9
       633             296504       00000 171005 1253  24                7
296633                 00       00000 171005 1253     23             9
       633             296504       00000 171005 1253  25                7
296633                 00       00000 171005 1253     24             9
       633             296504       00000 171005 1253  28                7
296633                 00       00000 171005 1253     25             9
       633             296504       00000 171005 1253  32                7
296633                 07       00001 171005 1134     53             9
       633             296503       00001 171005 1134  56                7
296633                 07       00001 171005 1134     55             9
       633             296503       00001 171005 1134  59                7
296633                 07       00001 171005 1134     59             9
       633             296503       00001 171005 1134  05                7
296633                 07       00001 171005 1134     04             9
       633             296503       00001 171005 1134  11                7
296633                 07       00002 171005 1134     57             9
       633             296503       00001 171005 1134  14                7
296633                 07       00001 171005 1134     15             9
       633             296503       00000 171005 1134  23                7
296633                 07       00001 171005 1134     14             9
       633             296503       00001 171005 1134  24                7
296633                 07       00001 171005 1134     23             9
Далее руками формируется два файла 0.тхт и 7.тхт
в файл 0 отбираются все строки в которых во второй колонки есть 00
в файл 7 соответственно все строки где во второй колонке есть 07.
Далее простенький скрипт подсчитывает количество строк в каждом из файлов и выводит на экран цифирь.

вопрос а можно как то автоматизировать ручной труд?
 

Фанат

oncle terrible
Команда форума
можно, конечно.
к примеру - написать макрос в Ворде
 

Tor

Новичок
зачем пхп?
man cat,grep,wc

з.ы. может софт для АТС купить и не париться?
 

Ali

Новичок
Фанат
спасибо за реакцию я правда использовал аксесс а не ворд но утомляет потом лить на сервер отдельные файлы, да и потом хотелось устранить человеческий фактор.
Т.е. я заливаю исходный текстовый файл на сервак а дальше пхп раскладывает все по полочкам.
Забыл уточнить на сервере есть и мускул и пхп и лось в смысле я.Ж)

-~{}~ 18.10.05 10:28:

Tor
к сожалению хостинг это хостинг.
там шел не предусмотрен.
максимум фтп доступ.

решение по деньгам принимаю не я, но все оформил что софт нужен, однако данное решение не для фирмы ..., так вечерами для себя ваяю.
 

Ali

Новичок
Автор оригинала: Фанат
почему это не может сделать аксесс?
Конечно может, и делает, но трабла в том что потом нужно на инетовский сервак лить дабы потом можно было считать из другого места. Очень не хотелось бы ехать на работу в связи с тем что один файлик забыл залить или залил старый.
Вот и вопрос был а можно исходный файл пульнуть к хостинг провайдеру, а там все разложилось.
 

Фанат

oncle terrible
Команда форума
конечно можно.
собственно, можно вообще на два файлика не делить, а просто посчитать количество стрк с нулями и с ноль семь
 

Ali

Новичок
Фанат
кстати да спасибо сейчас попробую, но мне надо вывести на экран отдельно пачку строк с 00 и отдельно пачку строк 07

И вот еще момент мне не надо анализировать цифры в третьей и т.д. колонках только из второй т.к. в третьей колонки довольно часто встречается 00
 

Фанат

oncle terrible
Команда форума
опять же, для этого не надо делать файл.
можно читать построчно, если нашёл нужную - выводишь.
 

Фанат

oncle terrible
Команда форума
а чего там глядеть?
ты вообще, насколько с пхп знаком?
файл прочитать можешь?
со строковыми функциями общался?
гостевую, скажем, написать можешь?
 

Ali

Новичок
Фанат
на все вопросы ответ "нет"
но поробую сделать раз уж вопрос стоит идти к ману
 

Фанат

oncle terrible
Команда форума
ну, я тебе хотя бы направление дам.
[m]file[/m] - Считывает файл в массив. построчно. каждый элемент массива - строка из файла.
массив - это такая переменная, которая может содержать в себе другие переменные.
[m]foreach[/m] - оператор, который служит для перебора элементов массива по очереди.

твой первый скрипт должен состоять из этих двух операторов.
Если файл твой выводится - можно приступать к фильтрации.
с фильтрацией уже сложнее. для начала можно искать в строке сочетание "\t00\t" если колонки делятся табуляцией.
искать можно функцией [m]strpos[/m]
по результатам поиска, с помощью оператора if решать - выводить или нет.
подробнее обо всём этом - http://php5.ru/study
 

Ali

Новичок
вот что надумалось
Код:
<?
// Создаю массив из текстового файла.

$all = file ('all.txt');
//добавляем переменные по которым потом будем сортировать
$dam = "00";
$bam = "07";
//пытаюсь сортировать по значению "00"
foreach($all as $dam => $kat )  {
     echo $kat
   }; 
// хз что сделал
?>
 

Ali

Новичок
Автор оригинала: Фанат
что - в примерах так и написано?
а как же вывести?
по поводу примеров ... тяжело быть бараном, но буду расти над собой.
Как вывести пока думаю, имхо надо выводить в отдельный файл каждую сортировку.

-~{}~ 18.10.05 18:07:

Фанат
подправил код.
собственно вопрос если я сортирую массив all по переменной dam как мне сказать что сортировать надо только по второй колонке?
 

Фанат

oncle terrible
Команда форума
погоди ты с отдельными файлами
тебе с этим бы разобраться
вот тебе пример http://php5.ru/study/syntax#foreach
почемук бы тебе пока не вевести свой файл просто в браузер?
а потом уже делать дальше?
 

Ali

Новичок
верхний код подправил.
вывод на экран echo
так?

-~{}~ 18.10.05 18:33:

Фанат
вспоминая школу
тоскливо так....
дай код списать :)

-~{}~ 18.10.05 18:39:

нет фигню я наваял, закинул на сервак
одвет сервера на 5+
$kat ) { echo $kat }; // УГ ВРН ЯДЕКЮК ?php>

-~{}~ 18.10.05 18:57:

ну не могу я понять где ошибка
конструкция foreach очевидно сравнение
в скобках какие переменные сравниваем в нашем случае сравниваем алл на предмет as наличия переменной dam если все верно получаем переменную kat её в смысле кат и выводим на экран. где я ступил?
 

master_x

Pitavale XXI wieku
тау если у тебя сервер так отвечает, значит у тебя вообще пхп не отрабатывает. смотри настройку пхп. и почему в закрвающем теге стоит php? должно быть просто ?> поэтому и не отрабатывает. так что настройку не смотри :)

-~{}~ 18.10.05 19:13:

нет ты не прав, конструкция foreach для того, чтобы гулять по массиву, получая из него ключ $dam и $kat в твоем случае. для сравнения используй if...else. а вообще создается впечатление, что ты даже не взглянул на мануал по пхп.
 

Ali

Новичок
Автор оригинала: master_x
и почему в закрвающем теге стоит php? должно быть просто ?> поэтому и не отрабатывает. так что настройку не смотри :)
убрал ситуация не изменилась
стало выдавать $kat ) { echo $kat }; // УГ ВРН ЯДЕКЮК ?>
а вообще создается впечатление, что ты даже не взглянул на мануал по пхп.
В какойто мере правильное впечатление, естественно я не прочитал мануала по пхп - значит сразу расстрел?

я читаю описание операторов в том направлении в котором описал уважаемый Фанат, но что то туплю
 
Сверху