если работает, значит запись корректна. А по поводу лучше: зависит от того что вам нужно. Если в массиве 'i18n' может быть несколько, и нужно все вывести, то можно использовать implode:
Mixa: тогда как то так: '/\[download#(\d+)/s' - эта регулярка вытаскивает только числа, которые идут после # (то есть оба варианта "[download#id#size#nohits]" и "[download#id]" сработают).
Ну а потом уже пробежаться по шорткодам, регуляркой которую я кидал первый раз.
а не думали спросить у того кто его делал??? В чем проблема, какая ошибка возникает, что в консоли выпадает (Ctrl + Shift + C -> Console - это для хрома). Если ничего не выскакивает то поставьте breakpoint'ы через вкладку Source и смотрите что не так, где валится, что пишется...
Артём: на самом деле сейчас ковыряться некогда, вам нужно сделать:
1. растянуть по высоте все дочерние элемент (.carousel .item) и добавить им (overflow: hidden)
2. картинки внутри элемента расстягивать во всю высоту (min-width: 100%; min-height: 100%) - если картинки меньше элемента (.item), то они растянуться как нужно - если больше, то печаль беда. Позиционирование лучше вынести в JS, если конечно нет решения на CSS.