Как «нарезать» дополнительное поле?

Голоса: +1

День добрый.

Уже несколько лет как использую дополнительные поля в uCoz для вывода нужной информации. И уже некоторое время задаюсь вопросом — как можно «нарезать» дополнительные поля в uCoz?

Суть: заполняю содержимое поля текстом вида:

news;Новости;load;Файлы;...;stuff;Онлайн игры

«Нарезаю» я его следующим образом:

<?substr($OTHER1$,0,strpos($OTHER1$,';'))?>

Проблема начинается где-то с 5-6, когда начинается примерно такое:

<?substr($OTHER1$,strpos($OTHER1$,';')+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1),';')+1+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1),';')+1),';')+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1),';')+1+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1),';')+1),';')),';')+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1),';')+1+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1),';')+1),';')+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1),';')+1+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1),';')+1),';')),';')),';'),strpos(substr($OTHER1$,strpos($OTHER1$,';')+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1),';')+1+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1),';')+1),';')+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1),';')+1+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1),';')+1),';')),';')+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1),';')+1+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1),';')+1),';')+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1),';')+1+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1),';')+1),';')),';')),';')),';'))?>

Ни у кого нет идей, как это чудо можно сократить, но при этом без JS, а только средствами uCoz?

Закрыто с пометкой: Найдено решение.
| Автор: | Категория: Дизайн сайта
Закрыт | | Автор: RJ

К сожалению весь код по какой-то причине. Вставляю ещё раз.

<?substr($OTHER1$,strpos($OTHER1$,';')+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1),';')+1+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1),';')+1),';')+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1),';')+1+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1),';')+1),';')),';')+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1),';')+1+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1),';')+1),';')+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1),';')+1+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1),';')+1),';')),';')),';'),strpos(substr($OTHER1$,strpos($OTHER1$,';')+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1),';')+1+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1),';')+1),';')+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1),';')+1+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1),';')+1),';')),';')+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1),';')+1+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1),';')+1),';')+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1),';')+1+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1+strpos(substr($OTHER1$,strpos($OTHER1$,';')+1),';')+1),';')),';')),';')),';'))?>

 

Не совсем понятно, для чего весь этот текст, и доп. поля, объясните все эти стропосы и субстропосы.
Что пытаемся вырезать....? и главное, зачем.

Ну я вроде как ответил. Первый код (<?substr($OTHER1$,0,strpos($OTHER1$,';'))?>) выводит news. Второй код (<?substr($OTHER1$,strpos($OTHER1$,';'),strpos(substr($OTHER1$,strpos($OTHER1$,';'))))?>) выводит Новости. Проблема в том, что с каждой новой итерацией объём кода удваивается. Длина шаблона ограничена 75000 символами, вследствии чего возникает проблема слишком длинного кода.

Я не понимать... объясните более понятным языком, зачем такое обрезание... двуязычие?
Используйте простые теги, они более надежны, и не надо "заморачиваться"
Какие именно данные хранятся в поле? Может есть какое-то другое решение Вашей идеи?

Нужно помнить о том, что есть ограничения на вложенность в условных операторах. С этим и связана Ваша проблема вероятно.
Ну я не заметил ограничений по уровню вложенности. Писал коды на 30-40 тысяч символов и работало нормально. Но искал лучшее решение. Сейчас решил использовать разные разделители в одном поле, чтобы достичь нужного результата.

Фактически мой код должен был выводить текст кусками: http://bethplanet.ru/the-elder-scrolls-5-skyrim (системные требования выводятся одним OTHER1. Вот эту проблему мне нужно было решить для более частой нарезки. Пришёл к выводу, что лучше использовать различные символы для нарезки (например первый |, второй #, третий $ и так далее) и получается таким образом оптимизировать код.

Всем спасибо, что пытались помочь.
...