| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Замена определенных слов в документе |
| Автор: Aliance 22.5.2005, 20:45 | ||
| Как заменить в документе определенные слова, заключенные между %...% на их определенные заменители. Оба значения берутся из массива. Читал на php.net про ereg(i), ereg(i)_replace и т.п. но не помогло, т.к. третий параметр весь документ. Соотв. нужно инклюдить его... в общем заморочка, не хочу. Есть другой способ? По человечески. Имеем документ index.php:
Как заменить %TABLE% на <hr>, а %SMTH_ELSE% на <br>, скажем. При чем, должен учитываться регистр. Желательно... |
| Автор: Mal Hack 22.5.2005, 20:49 |
| str_replace( "#%TABLE%#" , "<hr>" , $txt ); Но это для данного конкретного случая. Для пармера шаблонов надо делать preg_replace с callback функцией. |
| Автор: Aliance 22.5.2005, 21:16 | ||||
Я же написал, что это не подходит... Я не хочу извратами получать $txt...
|
| Автор: Mal Hack 22.5.2005, 21:21 |
| http://forum.vingrad.ru/index.php?showtopic=45358&st=0&unread=#entry356239 Вот тут мне объясняли. Последние файлы с таким подходом. |
| Автор: Aliance 22.5.2005, 22:26 |
| Не нашел... Там вообще ж дело о подсветке :-) |
| Автор: Mal Hack 22.5.2005, 23:00 | ||||
Дело в подходе.
|
| Автор: Aliance 22.5.2005, 23:04 |
| При чем тут это непонимаю. Мне нужно в странице написать %test% и при выходе получить HTML вместо %test% - <b>bla-bla-bla</b> |
| Автор: Mal Hack 22.5.2005, 23:11 | ||
|
| Автор: Aliance 22.5.2005, 23:38 | ||
| Mal Hack Как в строке я знаю! Я не знаю как во всем документе! Можно канечно сделать файл index2.php с этой разметкой, а потом в index.php написать такое:
Но я так не хочу! Я спрашиваю можно именно в самом документе получить ссылку на само себя...? |
| Автор: Mal Hack 22.5.2005, 23:42 | ||||
А чем весь документ от строки не отличается?
А это как понимать? |
| Автор: Aliance 22.5.2005, 23:51 | ||||||||
Не знаю
Млин. Незнаю как объяснить еще: Есть файл index.php, там пишем:
А браузер должен получить такой код в этой же страничке:
|
| Автор: Mal Hack 22.5.2005, 23:57 | ||
При этом текстоый файлл не имеет отношения к PHP. |
| Автор: Aliance 23.5.2005, 00:03 | ||
нет, опять не-то. Я же написал
Т.е. $code должна ссылатся на тот документ, где она написана // грубо говоря *окончательно обессилив, ушел спать* |
| Автор: Mont 23.5.2005, 04:37 | ||
| с трудом но вроде понял... так если у тебя в этом же файле написано:
значит тебе просто надо это дело писать не ввиде HTML, а в ПХП выводить через echo, или print. Ну а там соответственно подставляй какие хочешь значения. но это конечно если я тебя правильно понял |
| Автор: IZ@TOP 23.5.2005, 08:13 | ||
| Я понял что ты хочешь. Нужно заменить текст в вызываемом РHTML документе? Тогда извращаемся след. образом:
Но это ИМХО уже изврат полный. Выноси содержимое в отдельный файл. К примеру index.tpl, потом читай, потом заменяй, и выводи. |
| Автор: Aliance 23.5.2005, 08:21 | ||||
Нет, я же написал файл называется index.php - т.е. там сочитаются HTML и PHP! IZ@TOP Да, получается изврат. Ладно, скажу проще. В IPB есть такие вещи в PHP файле:
И это заменяется на то-то и то-то... Макросы другим словом. |
| Автор: Mal Hack 23.5.2005, 09:48 | ||
Это по тому принципу, который я тебе показал. |
| Автор: Opik 23.5.2005, 10:27 | ||
| Aliance сами макросы в IPB хранятся в базе.
|
| Автор: Aliance 23.5.2005, 15:31 |
| Opr Это мне ничего не дает... Тут принцип нужен :-) Mal Hack значит мне не дано понять это =) |
| Автор: Opik 23.5.2005, 16:43 | ||
| Aliance я лишнее и так убрал и оставил 1 принцип. в базе хранится что меняется | на что меняется.
- производим замену. в чем проблема? |
| Автор: Mal Hack 23.5.2005, 18:43 | ||
Есть текст. В нем макросы (%test%). Мы идем по тексту. Находим макрос. Передаем в функцию, которая возвращает значение, на которое мы заменяем этот макрос. Сама функция смотрит, какой именно макрос пришел и исходя из этого возвращает текст. Уж как проще, прости не могу |
| Автор: Aliance 23.5.2005, 20:41 |
| Дело в том, Mal Hack, что в твоем примере текст из IPB берется из темпалта файла *.tpl - тоесть вместо 1 файла (index.php) их 2 (index.php, template.tpl). А я с самого начал поставил условие - файл один. |
| Автор: Mal Hack 23.5.2005, 20:43 | ||
Дык какая разница откуда берется... Главное что ты с ним потом делаешь!! |
| Автор: Aliance 23.5.2005, 20:45 |
| В сотый раз повторяю: я не знаю как взять в переменную ссылку на сам документ, чтобы из него вырезать то, что мне нужно. |
| Автор: Mal Hack 23.5.2005, 20:48 | ||
|
| Автор: Aliance 23.5.2005, 21:43 |
| Не работает |
| Автор: Mal Hack 23.5.2005, 21:44 | ||
|
| Автор: Aliance 23.5.2005, 21:50 |
| Mal Hack А есть отличия? |
| Автор: Mal Hack 23.5.2005, 22:45 | ||||||
|
| Автор: Aliance 23.5.2005, 23:10 |
| Пасип, работает. Но больно муторно как-то...подумаю, использовать ли )) С меня плюс |
| Автор: Mal Hack 23.5.2005, 23:25 | ||
Это единственный способ получить то, что ты уже якобы отправил пользователю. |