[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Выборка с файла
andriy111
Привет всем!
Помогите плиз выбрать с файла структуры
 13  7  2  6 40  0.0000000  0 10G05G13G26G10G08G07R04R22R05R23
23634362.174 23634358.313 124199418.38109 96778771.15107
26504386.302 26504385.944 139281438.14403 108530977.09901
23274893.725 23274889.741 122310414.75109 95306822.10805
25507202.496 25507201.442 134041238.59607 104447700.42703
22582290.314 22582286.350 118670750.94409 92470724.11507
23524964.781 23524960.108 123624514.08209 96330791.71307
22143715.589 22143709.697 118578592.65209 92227765.91109
25799254.888 25799252.282 137718201.46707 107114137.38605
22231628.170 22231624.874 118840841.89309 92431766.80009
25465676.703 25465673.554 136224212.86705 105952172.45903
13 7 2 6 40 1.0000000 0 10G05G13G26G10G08G07R04R22R05R23
23635214.903 23635211.342 124203900.78209 96782263.93007
26505726.388 26505726.171 139288480.44103 108536464.59701
23275079.858 23275076.134 122311393.45609 95307584.73705
25508570.476 25508569.603 134048428.14007 104453302.66303
22583017.681 22583013.997 118674574.94009 92473703.85607
23526051.508 23526046.735 123630224.63109 96335241.49707
22144877.060 22144871.268 118584813.13409 92232604.05909
25800224.245 25800221.979 137723376.38907 107118162.33305
22231977.831 22231974.194 118842709.82909 92433219.64109
25466004.358 25466000.689 136225965.03707 105953535.28003
13 7 2 6 40 2.0000000 0 10G05G13G26G10G08G07R04R22R05R23
23636212.272 23636208.731 124209142.21509 96786348.16707
26507210.714 26507210.637 139296281.22503 108542543.12101
23275410.572 23275406.648 122313130.91509 95308938.60105
25510083.216 25510082.203 134056376.27207 104459496.00903
22583890.188 22583886.064 118679157.75009 92477274.87407
23527282.555 23527277.862 123636693.85909 96340282.44907
22146183.211 22146177.459 118591807.14709 92238043.84509
25801337.962 25801336.096 137729322.44807 107122787.04505
22232471.691 22232468.055 118845350.00509 92435273.10709
25466476.193 25466473.343 136228489.92007 105955499.07603
13 7 2 6 40 3.0000000 0 10G05G13G26G10G08G07R04R22R05R23
23636296.781 23636293.180 124209586.18509 96786694.11707
26507782.640 26507782.142 139299284.06703 108544882.99101
23274828.265 23274824.381 122310070.65409 95306553.98305
25510682.836 25510681.563 134059526.48207 104461950.71203
22583849.275 22583845.131 118678942.87809 92477107.44107
23527600.602 23527595.909 123638365.28609 96341584.86207
22146576.543 22146570.590 118593912.56509 92239681.38909
25801539.159 25801536.973 137730395.38107 107123621.54205
22232052.432 22232049.176 118843110.18809 92433531.02909
25466035.248 25466031.818 136226131.34705 105953664.63103
13 7 2 6 40 4.0000000 0 10G05G13G26G10G08G07R04R22R05R23


все совпадения по шаблону с " 13 7 2 6 40 4.0000000". и поместить в массив...никак не могу разобраться, помогите!
sergeiss
Поместить в массив что именно? Эту строку или что-то следующее за ней или еще что?

Вообще, я бы считывал построчно, разбивал каждую строку функцией explode() и анализировал содержимое элементов массива. И уже дальше принимал бы решение о нужных действиях.

А регулярками в данном случае будет дольше и муторнее.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
andriy111
Именно эту строку. Читать построчно не вариант т.к. строк в файле могут быть тысячи...
Может читать построчно и проверять соответствие шаблону?
Но не могу разобраться с регулярными, это для меня как астрофизика=)
andriy111
Вот вроде бы шаблон сделал, но как сделать циклическую проверку до конца файла хз...
/(\s+)(\d{2})(\s+)(\d{1,2})(\s+)(\d{1,2})(\s+)(\d{1,2})(\s+)(\d{1,2})(\s+)(\d{1,2})/mg
sergeiss
Цитата (andriy111 @ 15.10.2013 - 09:02)
Читать построчно не вариант т.к. строк в файле могут быть тысячи...

Возможно, я тебя огорошу smile.gif Но прежде чем ты сможешь использовать регулярки, ты должен прочитать данные из файла. Т.е. объем чтения будет один и тот же, и будет он равен объему файла. То есть, что ты ни делай, но считать файл обязан целиком. Разница еще в том, что при построчном чтении ты не забиваешь оперативку. А если читаешь целиком, то весь файл должен будешь поместить в оперативную память. Если файл гигантский, то это "не есть гуд".

Причем - подчеркиваю! - обработка регулярками может длиться дольше. Мне кажется, что в твоем случае регулярки как раз меньше подходят.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
andriy111
Что-то получилось:

<?php
$phrase = " 13 7 2 6 46 45.0000000 0 11G26G28G08G05G07G09G27G19G03S26S20
109875575.68617 20908626.042 2439.994 48.000
113441789.90717 21587254.316 2106.557 48.000
107391132.63918 20435853.344 -416.480 52.000
113203924.89517 21541989.798 -1160.781 50.000
113098154.69217 21521863.038 -2248.904 48.000
104468548.64418 19879703.428 984.970 52.000
130613467.45415 24854918.856 -1111.405 38.000
127236042.56816 24212214.840 660.932 42.000
126805174.60916 24130223.140 -1367.478 42.000
200147944.03516 38086896.486 48.312 42.000
200084724.70015 38074866.566 17.127 38.000
13 7 2 6 46 46.0000000 0 11G26G28G08G05G07G09G27G19G03S26S20
109873135.630 7 20908161.742 2439.570 48.000
113439683.342 7 21586853.456 2106.047 48.000
107391549.093 8 20435932.584 -416.916 52.000
113205085.755 7 21542210.698 -1161.463 50.000
113100403.490 7 21522290.978 -2249.211 48.000
104467563.705 8 19879516.008 984.403 52.000
130614578.878 5 24855130.336 -1112.039 38.000
127235381.708 6 24212089.080 660.281 42.000
126806542.126 6 24130483.360 -1368.085 42.000
200147895.488 6 38086887.166 48.324 42.000
200084707.247 5 38074863.206 17.226 38.000
13 7 2 6 46 47.0000000 0 11G26G28G08G05G07G09G27G19G03S26S20"
;
preg_match("/^(\s+)(\d{2})(\s+)(\d{1,2})(\s+)(\d{1,2})(\s+)(\d{1,2})(\s+)(\d{1,2})(\s+)(\d{1,2})/", $phrase, $found);
var_dump($found);

?>


Но если если не подходит, то как решить задачу?
sergeiss
Цитата (andriy111 @ 15.10.2013 - 09:22)
Но если если не подходит, то как решить задачу?

Цитата (sergeiss @ 15.10.2013 - 08:14)
Вообще, я бы считывал построчно, разбивал каждую строку функцией explode() и анализировал содержимое элементов массива.



_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Быстрый ответ:

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