У меня есть текст в котором есть такие вот теги - {} (в принципе не важно как они выглядят можно и [] главное что бы скрипт мог их наити среди текста).
И мне надо что бы программа (даже на знаю может ли это пхп или нет) искала эти теги и заменяла их на экивалент (скажем который находится в БД (mysql)).
Но надо что бы эта программа выполняла цикл, что бы если во вставляемом коде тоже будет {} тег.
Пожогите.....
Спустя 8 минут, 13 секунд (29.01.2009 - 16:44) twin написал(а):
ПоЖогаю:
str-replace()
В один массив складываете Ваши теги, в другой в том же порядке - то, на что менять. И всё.

В один массив складываете Ваши теги, в другой в том же порядке - то, на что менять. И всё.
Цитата |
Но надо что бы эта программа выполняла цикл, что бы если во вставляемом коде тоже будет {} тег. |
А с этого места поподробнее...
Спустя 41 минута, 36 секунд (29.01.2009 - 17:25) apc написал(а):
Цитата (twin @ 29.01.2009 - 13:44) | ||
ПоЖогаю: ![]() В один массив складываете Ваши теги, в другой в том же порядке - то, на что менять. И всё.
А с этого места поподробнее... |
Есть код
<html>
<head>
<title>
{title_name}
.....
а в {title_name} будет написано "заголовок" и {css}
Спустя 5 минут, 40 секунд (29.01.2009 - 17:31) twin написал(а):
Ну так и скажите - нужен шаблонизатор. Пользуйте готовые, смарти например, если не готовы сами писать.
Спустя 3 минуты, 50 секунд (29.01.2009 - 17:35) apc написал(а):
Цитата (twin @ 29.01.2009 - 14:31) |
Ну так и скажите - нужен шаблонизатор. Пользуйте готовые, смарти например, если не готовы сами писать. |
А может у вас наудется ссылка на хороший мануал по шабнонизаторам.
Спустя 2 минуты, 34 секунды (29.01.2009 - 17:37) twin написал(а):
Я их терпеть не могу и стараюсь всячески избегать. Есть масса других, более эффективных и простых способов разделить логику и представление. По этому помочь в данном вопросе не могу к сожалению.
Спустя 1 минута, 21 секунда (29.01.2009 - 17:39) apc написал(а):
Цитата (twin @ 29.01.2009 - 14:37) |
Я их терпеть не могу и стараюсь всячески избегать. Есть масса других, более эффективных и простых способов разделить логику и представление. По этому помочь в данном вопросе не могу к сожалению. |
Подкажи как ты это из избегаешь. Мне правда очень интерестно
Спустя 40 минут, 23 секунды (29.01.2009 - 18:19) twin написал(а):
Изначально php был тегом html/ Это была программа, написанная на Perl и которая вставлялась специальным тегом <? ?> в html страницу. Потом, когда идея понравилась, программу начали усиленно развивать. Но суть у неё осталась та же. Отдать в поток под видом html разметки результат вычислений программы. То есть первична все таки разметка, а динамика остается за кадром. А что делает шаблонизатор? Берет непонятные теги, которые не всегда корректны, програмными методами перерделывает их в нормальную разметку и вставляет в html. То есть по сути всё перевернуто с ног на голову. Вы сначала пишите html, что бы посмотреть как это будет выглядеть, потом переводите на напонятный суррогатный язык шаблонизатора (свои странные теги {}), что бы скормить php, который не понимает, что от него хотят, пишите парсер, что бы он эти теги превратил обратно в то, что уже давно сделано и эту смесь из глюков и траблов выдаете юзеру. Всё от того, что считаете первичной логику, а не наоборот.
То есть Вы шинкуете свеклу и морковку, каждый кусочек аккуратно заворачиваете в бумажку с надписью, смешиваете в миксере, потом разбираете миксер, из получившихся деталей (функций php) собираете другую машинку, которая разделяет эту смксь на составные части, читая надписи на бумажках, собираете миксер обратно, смешиваете все и подаете на стол. Хотя можно совсем по другому. Резать свеклу и морковку не в одну миску, а каждую в свою, а потом один раз смешать в миксере, для того он и создан.
Вводит в такое заблуждение расширение файлов - php. А на самом деле это одно и тоже, что и html, просто исполняется по умолчанию. Можно выставить диррективу в настройках сервера, и html будет так же исполняться, как php. Этого делать не надо, я для того, чтоб понятней. По этому смотреть на файлы с кодом надо не как на программные с вкраплением разметки, а как на разметку с вкрарлением программного кода. И пусть программа в сто раз больше, суть одна.
К чему все это предисловие. Есть очень простой способ - писать отдельно html и php, а вставлять не первый во второй, а наоборот. Допустим так:
То есть Вы шинкуете свеклу и морковку, каждый кусочек аккуратно заворачиваете в бумажку с надписью, смешиваете в миксере, потом разбираете миксер, из получившихся деталей (функций php) собираете другую машинку, которая разделяет эту смксь на составные части, читая надписи на бумажках, собираете миксер обратно, смешиваете все и подаете на стол. Хотя можно совсем по другому. Резать свеклу и морковку не в одну миску, а каждую в свою, а потом один раз смешать в миксере, для того он и создан.
Вводит в такое заблуждение расширение файлов - php. А на самом деле это одно и тоже, что и html, просто исполняется по умолчанию. Можно выставить диррективу в настройках сервера, и html будет так же исполняться, как php. Этого делать не надо, я для того, чтоб понятней. По этому смотреть на файлы с кодом надо не как на программные с вкраплением разметки, а как на разметку с вкрарлением программного кода. И пусть программа в сто раз больше, суть одна.
К чему все это предисловие. Есть очень простой способ - писать отдельно html и php, а вставлять не первый во второй, а наоборот. Допустим так:
HTML |
<html> <head> <title> <?php echo $title_name ?> </title> |
А собирать такие шаблоны очень просто функцией include(). Вот самый простой пример:
PHP |
<? |
Есть еще масса хитростей, но суть одна - определиться, что первично. Тогда не нужно тратить ресурсы и время, что бы распарсить шаблоны, не нужно сочинять кэшей и прочей лабуды, которая совсем ни к чему на маленьких и средних сайтах. Да и на больших при правильно подобранной архитектурой это лучше по моему скромному ИМХО.
Спустя 17 часов, 15 минут, 38 секунд (2.02.2009 - 11:35) Niemand написал(а):
twin,
чисто интереса ради. а что ты делаешь, если у тебя в content1.html или в content2.html есть динамические данные, которые тебе надо подставлять в html?
чисто интереса ради. а что ты делаешь, если у тебя в content1.html или в content2.html есть динамические данные, которые тебе надо подставлять в html?
Спустя 39 минут, 25 секунд (2.02.2009 - 12:14) sergeiss написал(а):
Niemand, я отвечу, как делаю я. Но я уверен, что и twin делает также, как и я 
Если в любом из файлов, подключаемых через include, есть динамические данные, то это будет уже файл PHP, но не HTML. А в нем делаем всё, что нам надо, для обработки динамических данных. Также, как и при прямом вызове этого скрипта.
У меня могут быть несколько таких уровней "вложенности", в зависимости от разных условий. Ну, где-то 2-3 точно есть. Под "вложенностью" я понимаю то, что я в "корневом" файле использую include (для одного из нескольких файлов, в зависимости от условий), затем в подключенном файл есть какие-то условия, по одному из которых подключается через include третий файл. А из него можно подключать еще и другие файлы... Ну и так далее, по мере необходимости.
И всё это великолепно работает.
Я с этого получаю удобство в виде небольших файлов, каждый из которых выполняет определенную работу. Код очень легко читается, отлаживается и модифицируется.

Если в любом из файлов, подключаемых через include, есть динамические данные, то это будет уже файл PHP, но не HTML. А в нем делаем всё, что нам надо, для обработки динамических данных. Также, как и при прямом вызове этого скрипта.
У меня могут быть несколько таких уровней "вложенности", в зависимости от разных условий. Ну, где-то 2-3 точно есть. Под "вложенностью" я понимаю то, что я в "корневом" файле использую include (для одного из нескольких файлов, в зависимости от условий), затем в подключенном файл есть какие-то условия, по одному из которых подключается через include третий файл. А из него можно подключать еще и другие файлы... Ну и так далее, по мере необходимости.
И всё это великолепно работает.
Я с этого получаю удобство в виде небольших файлов, каждый из которых выполняет определенную работу. Код очень легко читается, отлаживается и модифицируется.
Спустя 1 час, 54 минуты, 16 секунд (2.02.2009 - 14:08) twin написал(а):
Я делаю немного по другому, я стараюсь полностью разделить логику и представление, чего не позволяет сделать смарти к слову. Я вывожу в HTML результат работы функций, по той же схеме:
HTML |
<html> <head> <title> <?php echo title($title_name) ?> </title> |
Ну а в php думаю объяснять не надо, так к примеру:
PHP |
<? |
Ну а в индексе так можно:
PHP |
<? |
Еще есть куча тонкостей... Буфферизация к примеру и пр. Я вообще стараюсь не использовать классы не по делу, с ними много случается проблем. Да и код трудно читаем. Когда проект большой, вопросов нет, удобно и наверное необходимо. Но по моей схеме принципы ООП остаются, это ИМХО проще. Всем, и программистам м верстальщикам.
Спустя 10 минут, 59 секунд (2.02.2009 - 14:19) sergeiss написал(а):
Цитата (twin @ 2.02.2009 - 14:08) |
Я делаю немного по другому, я стараюсь полностью разделить логику и представление... |
Я про это же и говорил, вобщем-то... Хотя, может, и не совсем понятно выразился.
Спустя 20 минут, 31 секунда (2.02.2009 - 14:40) Niemand написал(а):
ну да, это в принципе понятно-то
если делаешь самостоятельный проект, то это по-моему само собой разумеещееся. лично я применяю шаблонизатор (который, кстати, сам под себя и писал, но принцип как у топикстартера), когда работаю с дизайнерами, которые в PHP не бельмеса... бывают и такие, учиться не хотят, а рисуют отлично.

Спустя 23 минуты, 17 секунд (2.02.2009 - 15:03) twin написал(а):
Вообще с шаблонизатором верстальщикам проблематично, смотря какой шаблонизатор вообще то. По моей схеме все проще. Делается чистый html, режется на куски и вместо текстов подставляются вставки. Если использовать прозрачные имена, как в примере выше, то проблем вообще нет. Ведь не надо долго греть голову, чтобы понять, что
HTML |
<?php echo title($title_name) ?> |
это тайтл к примеру. Можно работать совершенно паралельно, имея только дизайн на картинке. Чтоб было видно, что и куда выводить.
Цитата |
Я про это же и говорил, вобщем-то... |
Не совсем так, по Вашей схеме в html нужно подключать другой файл, да еще в зависимости от условий. Это всё же логика и не очень прозрачно, можно запутать верстальщика и запутаться самому. Есть очень простой способ - буфферизация. Я вот тут описал немного. Тогда можно подключаемый файл вставить таким же тегом.
Спустя 30 минут, 51 секунда (2.02.2009 - 15:34) sergeiss написал(а):
Цитата (twin @ 2.02.2009 - 15:03) |
Не совсем так, по Вашей схеме в html нужно подключать другой файл, да еще в зависимости от условий. Это всё же логика и не очень прозрачно, можно запутать верстальщика и запутаться самому. |
Может и так. Но в моей случае (то, что я делаю по основной работе) я "един в двух лицах": и дизайнер, и программер

Опять же, я работаю с Дримвивером. Он мне показывает всю страницу, все объекты, вне зависимости от ветвлений. Весьма удобно. Я вижу объекты и знаю, что там скрывается "за ними".
С отдельными дизайнерами-верстальщиками не общался. По моим представлениям, он должОн нарисовать сайт, а дальше отдать программеру. Чтоб тот реализовывал идею. А самому дизайнеру нефиг даже близко к коду подходить. Даже include() не надо его допускать делать. Хотя, может, я и не прав...
Спустя 1 час, 52 минуты, 30 секунд (2.02.2009 - 17:26) twin написал(а):
Ну если работаешь в команде, обычно каждый занимается своим делом. Как говорится - специалист широкого профиля, это не специалист. Я вот в верстке довольно тугой, а там и фантазия и знания нужны, да и талант.
На счет дрёмы не в курсе, но инклюдить файлы можно и в функции. Просто делается статический сайт, на чистом html и голая логика. Потом за пять сек собирается в кучу. причем можно делать несколько разных скинов и менять их прямо в динамке. От времени суток одно время модно было или по желанию пользователя... Верстальщик может не задумываясь лепить шаблоны под новый диз и все довольны.
Вообще кому как удобней, просто зачастую сайтик из 10- 15 страниц лепят как социальную сеть. На фреймворках или джумлах каких нибудь. Или классы пишут, хотя вызываются они один раз всего. Про смарти вообще отдельный разговор...
На счет дрёмы не в курсе, но инклюдить файлы можно и в функции. Просто делается статический сайт, на чистом html и голая логика. Потом за пять сек собирается в кучу. причем можно делать несколько разных скинов и менять их прямо в динамке. От времени суток одно время модно было или по желанию пользователя... Верстальщик может не задумываясь лепить шаблоны под новый диз и все довольны.
Вообще кому как удобней, просто зачастую сайтик из 10- 15 страниц лепят как социальную сеть. На фреймворках или джумлах каких нибудь. Или классы пишут, хотя вызываются они один раз всего. Про смарти вообще отдельный разговор...