![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
svip |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 27.3.2007 Репутация: нет Всего: нет |
Есть строка:
и подобные. нужно получить:
Вложенность скобок должна быть неограничена. Подскажите какой использовать алгоритм, или может уже есть готовые методы реализации? Думаю нужно рекурсией выбирать все что между {}, составлять для каждого массив, затем составлять массив для значений разделенных | потом перебирать все эти массивы и собирать предложения. Может как то по другому возможно? |
||||
|
|||||
taral |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 230 Регистрация: 17.1.2008 Репутация: нет Всего: нет |
Попробуй заменить | и { в строке таким образом чтобы строка приняла вид JSON. а потом json_decode переведешь все в массив.
Ну а дальше думаю знаешь что делать=) Я не вникал в строку. Возможно будет проще реализовать это по другому. Но мне кажется этот способ самым простым. |
|||
|
||||
svip |
|
||||||||||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 27.3.2007 Репутация: нет Всего: нет |
Да вот сам процесс замены и получается - парсинг строки. таким образом лучше сразу собрать массив, чем юзать json, зная о его проблемах с русской кодировкой, да и спецсимволами.
Пробовал разобрать сначало на
потом нужно разобрать
на
и получить массив вида
и далее вторую строку:
и тд. вот проблема в первой строке, как ее разобрать, то что в фигурных скобках Думаю нужно сначало разделить на
но вот как разобрать? как не учитывать | стоящие в фигурных скобках. Люди помогите, ![]() |
||||||||||||||
|
|||||||||||||||
taral |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 230 Регистрация: 17.1.2008 Репутация: нет Всего: нет |
У меня не возникало проблем с json. Переводишь текст в UTF-8.
делаешь замену. | на ", " делаешь замену {", на [ делаешь замену } на "] И у тебя строка json (возможно я что-то недосмотрел, делал на скорую руку) Переводиш в UTF-8 если строка в другой кодировке и переводишь через json_decode в массив. Выходит 5 строк. Если писать в ручную разбор строки строк будет намного больше. Если все же решишь по своему используй рекурсивный запуск функций (ты кажется сам это написал уже). П.С. Я слышал что в PHP есть функция разбора таких строк как у тебя... но не помню ее.. Добавлено через 8 минут и 8 секунд Замена моя не правильная. но небольшие изменения и все будет работать. |
|||
|
||||
taral |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 230 Регистрация: 17.1.2008 Репутация: нет Всего: нет |
Выводит
Это сообщение отредактировал(а) taral - 2.1.2009, 00:50 |
||||
|
|||||
svip |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 27.3.2007 Репутация: нет Всего: нет |
Разобрался в вашем скрипте. + помогло
А то вначале ничего не работало ![]() Вот теперь нужно обратно перекодировать? перебирать весь массив? или есть способ, функция, класс для перекодирования целого массива? Это сообщение отредактировал(а) svip - 2.1.2009, 20:55 |
|||
|
||||
taral |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 230 Регистрация: 17.1.2008 Репутация: нет Всего: нет |
могу кинуть функцию. там 5 строчек=)
Добавлено через 1 минуту и 36 секунд $str=iconv("WINDOWS-1251", "UTF-8", $str); у меня не было поскольку сам файл был в UTF-8. Кстати про мою функцию. Я уверен что ее можно переписать более лаконично. Я ее на скорую руку накатал. |
|||
|
||||
svip |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 27.3.2007 Репутация: нет Всего: нет |
кинь пожалуйста свою функцию.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |