LINUX.ORG.RU

php, preg_match, {}


0

0

требудеться написать ф-ции разобра csv файлов:
строку нужно считывать до тех пор, пока не будет найдено 12;
те файл идет ввиде
abc;def;hgk;asf;gdas;asd;asfd;asdg;;;
возможно ;; - те пустые стороки

33 $buffer = ''; $this->line = '';
34 while (!feof($this->hfile)) {
35 $buffer .= fgets($this->hfile, 4096);
36 echo $buffer."<br />";
37 if(preg_match('/([.]*;){12}/', $buffer, $matched)) {
38 var_Dump($matched);
39 $this->line .= implode($matched,',');
40 break;
41 }
42 }
43 return $this->line;

смущает preg_match('/[.]*;{12}/',... )
я хочу написать: любой символ - [.], не разу и более - *,
за ним идет - ;, и таких 12 повторов: {12}

работает если на вход поступают просто ;;;;;;;;;;;;;; - 12 штук
если же есть символы и тп, не проходит => [.]* я сдесь ошибся ?


Э.... или я чего-то не понимаю, но горяздо проще посмотреть на функции explode() и почитать про работу с массивами.

/(.*?;){12}/ - так в общем случае попробуй.

Anoxemian ★★★★★
()
Ответ на: комментарий от Anoxemian

>/(.*?;){12}/ - так в общем случае попробуй.
да, спасибо, так заработало.
в двух словах - explode и get_file_content - есть кое какие неудобства, проще написать свое

hose
() автор топика
Ответ на: комментарий от hose

да, конечно проще изобрести велосипед... особенно когда существует fgetcsv

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.