Выдернуть массив из фиг. скобок без preg_match

Страшный Злодей

Бывший член клуба (достало хамство).
Выдернуть массив из фиг. скобок без preg_match

Упёрся мозгом в дурацкую задачу:
есть большие текстовые файлы с матрицами значений, записанных следующим образом
{юпитер|сатурн|б.м|м.п}{1|2000|500000|световая скорость}...
нужно представить то что находится внутри "{}" как массивы, чтобы потом обрабатывать соответствующие им элементы, разделенные "|" (здесь, конечно, использую explode). По привычке решил сделать через preg_match, но так как файлы большие от 5Mb, то скрипт сильно грузит сервер и часто вырубается, по частям обрабатывать файл тоже не охота. Есть предположение, что возможно существует либо до селе не используемая мною встроенная функция (вместо регулярки с preg_match) либо какое другое красивое решение. Может кто подскажет?
 

dimagolov

Новичок
Страшный Злодей
а что ты делать собираешься с массивом размером более 5 метров?
 

Страшный Злодей

Бывший член клуба (достало хамство).
dimagolov
каждый из массивов, естественно меньше чем 5 мб, проблема в том, что их много. Их нужно "вычленить" из файла, для начала. Потом с ними работают другие скрипты, с ними все в порядке. Массивы пишутся в базу. А потом используются для некоторых расчетов, и сопоставлений.

P/S: почему спрашиваешь? из интереса или по делу?
 

RigVan

Постоянный член клуба
KeTal
Сорри, недопонял:
PHP:
$array[0]=str_replace("{","",$array[0]);
...
или предлагаешь прогонять все $array[$i] через цикл с "str_replace" ?
 

KeTal

Новичок
RigVan
да, разбить на массивы, а потом уже заносить через цикл в базу. В начале каждого цикла просто лишний символ "{" очищать.

А вообще, как мне кажется, если планируется это все вносить в базу и работать уже с базой, то можно снять ограничение на время выполнения скрипта на локальном комьютере и занести все в базу. И пусть выполняется сколько хочет.
 

Pigmeich

Новичок
Страшный Злодей
А в чем вообще проблема?

Надо просто понимать, что есть высокоуровневые способы парсинга и низкоуровневые. Регэкспы - высокоуровневый и много жрет, но его очень удобно писать. Зато всегда работает выдирание руками: с прохождением по каждому символу строки.

Или за тебя код написать надо?
 

Страшный Злодей

Бывший член клуба (достало хамство).
Pigmeich
Сам ручками проходи, ты в клубе не рукоблудников, а пэхэпистов.

А вот по поводу низко-высокоуровневости - есть ещё и низкоуровневые языки, на которых, кстати, пишутся встроенные функции PHP. Так вот они будут явно быстрее работать чем твои или мои ручки... Если бы ты вопрос читал внимательно, а не как всегда, то понял бы, что их то я и ищу, и не стал бы давать откровенно дурацких советов.

код за меня не пиши - не надо кошмарить, лучше вопросы научись читать.
 

Pigmeich

Новичок
Меня поражает как люди вместо того, чтобы написать функцию на двадцать строк по 20 символов, люди пишут килобайты тексты в форум и спрашивают: "А нет ли красивого решения?".

Ребята: для вас - только регэксп.
 

Страшный Злодей

Бывший член клуба (достало хамство).
Pigmeich
... ты все-таки не научился вопросы читать.
смысл не в поиске "красоты", а в том, чтобы скрипт "не падал" при парсинге большого файла.

кому регэксп, кому имбицилия...
 

dimagolov

Новичок
Страшный Злодей
читай файл блоками, и парсь блоками. если конца масива нету в считанном блоке, то читай следущий блок и цепляй начало прошлого необработанного массива в его начало. при ровных руках памяти будет требоваться не многим больше размера блока.
 

Pigmeich

Новичок
Страшный Злодей
А ты уже проверял, что файл падает при парсинге руками?

Могу специально для тебя посоветовать волшебный порошок "крибли-крабли бумс" - исправляет любую кривость рук!
 

Страшный Злодей

Бывший член клуба (достало хамство).
dimagolov
Да я так и стал уже делать, просто не охота было (как писал, в начале) по частям обрабатывать. Но видимо чудес не предвидится, пришлось вернуться именно к этому варианту.

Pigmeich
Автор оригинала: Pigmeich
А ты уже проверял, что файл падает при парсинге руками?
Может пояснишь наконец, что ты подразумеваешь под "парсингом руками"?
Автор оригинала: Pigmeich Могу специально для тебя посоветовать волшебный порошок "крибли-крабли бумс" - исправляет любую кривость рук!
А ты уже проверял? Что порошок тебе действительно помогает? Не заметно..
 

Pigmeich

Новичок
А ты уже проверял? Что порошок тебе действительно помогает? Не заметно..
мне он просто не нужен.

Может пояснишь наконец, что ты подразумеваешь под "парсингом руками"?
парсинг на уровне абстракции строковых и файловых операций. Проще говоря, когда ты не пользуешься ни регэкспами, ни функциями вроде parse_url.
 

dimagolov

Новичок
[offtopic]
Страшный Злодей
ну как можно надеяться на чудеса и при этом обижаться на советы про волшебный порошок?
[/offtopic]
 

Страшный Злодей

Бывший член клуба (достало хамство).
dimagolov
:) да разве на Pigmeich, можно обижаться? Вон почитай сам, выдумал он какой-то термин "парсинг руками" и теперь даёт ему ещё более нелепое определение - "парсинг на уровне абстракции строковых и файловых операций"... тут не обижаться, а плакать надо :) Даже задуматься страшно, при чём тут руки... А далее еще круче - "Проще говоря, когда ты не пользуешься ни регэкспами, ни функциями вроде parse_url."
Т.е. ответ на вопрос как избежать использования регэкспов он отвечает - "не использовать их". Абзац... дальше не куда. Козьма Прутков в натуре :)
 
Сверху