Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Замена определенных слов в документе 
:(
    Опции темы
Aliance
Дата 22.5.2005, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



Как заменить в документе определенные слова, заключенные между %...% на их определенные заменители. Оба значения берутся из массива. Читал на php.net про ereg(i), ereg(i)_replace и т.п. но не помогло, т.к. третий параметр весь документ. Соотв. нужно инклюдить его... в общем заморочка, не хочу. Есть другой способ?

По человечески. Имеем документ index.php:
Код

<HTML>
<BODY>

jhjhj
%TABLE%
hjhgjhg
%SMTH_ELSE% 

</BODY>
</HTML>


Как заменить %TABLE% на <hr>, а %SMTH_ELSE% на <br>, скажем. При чем, должен учитываться регистр. Желательно...

Это сообщение отредактировал(а) Aliance - 22.5.2005, 20:46
PM MAIL WWW ICQ Skype   Вверх
Mal Hack
Дата 22.5.2005, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



str_replace( "#%TABLE%#" , "<hr>" , $txt );
Но это для данного конкретного случая. Для пармера шаблонов надо делать preg_replace с callback функцией.
PM ICQ   Вверх
Aliance
Дата 22.5.2005, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



Цитата(Mal @ 22.5.2005, 21:49)
str_replace( "#%TABLE%#" , "<hr>" , $txt );

Я же написал, что это не подходит... Я не хочу извратами получать $txt...

Цитата(Mal @ 22.5.2005, 21:49)
Для пармера шаблонов надо делать preg_replace с callback функцией

smile
PM MAIL WWW ICQ Skype   Вверх
Mal Hack
Дата 22.5.2005, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



http://forum.vingrad.ru/index.php?showtopi...ad=#entry356239
Вот тут мне объясняли. Последние файлы с таким подходом.
PM ICQ   Вверх
Aliance
Дата 22.5.2005, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



Не нашел... smile
Там вообще ж дело о подсветке :-)
PM MAIL WWW ICQ Skype   Вверх
Mal Hack
Дата 22.5.2005, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата(Aliance @ 22.5.2005, 23:26)
Там вообще ж дело о подсветке :-)

Дело в подходе.
Код
return preg_replace( "#%(.+?)%#ie" , "hl_do( '\\1' )" , $code , TRUE );

function hl_do( $text )
 {
  switch( $text )
   {
     case "TITLE": return "это заголовок" break;
     case "TITLE1": return "это заголовок 1" break;
     case "TITLE2": return "это заголовок2" break;
     default: return "неверное имя шаблона";
   }
 }


PM ICQ   Вверх
Aliance
Дата 22.5.2005, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



При чем тут это непонимаю.
Мне нужно в странице написать %test% и при выходе получить HTML вместо %test% - <b>bla-bla-bla</b>
PM MAIL WWW ICQ Skype   Вверх
Mal Hack
Дата 22.5.2005, 23:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Код
<?php

$code = "adhakdjdhsa %test% dh";
print preg_replace( "#%(.+?)%#ie" , "hl_do( '\\1' )" , $code , TRUE );

function hl_do( $text )
 {
  switch( $text )
   {
     case "test": return "<b>bla-bla-bla</b>"; break;
   }
 }

?>

PM ICQ   Вверх
Aliance
Дата 22.5.2005, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



Mal Hack
smile ррр
Как в строке я знаю!
Я не знаю как во всем документе!
Можно канечно сделать файл index2.php с этой разметкой, а потом в index.php написать такое:
Код

include("index2.php");
$a = file("index2.php");
str_replace( "#%TABLE%#" , "<hr>" , $a );

Но я так не хочу! Я спрашиваю можно именно в самом документе получить ссылку на само себя...?
PM MAIL WWW ICQ Skype   Вверх
Mal Hack
Дата 22.5.2005, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата(Aliance @ 23.5.2005, 00:38)
Я не знаю как во всем документе!

А чем весь документ от строки не отличается? smile

Цитата(Aliance @ 23.5.2005, 00:38)
Я спрашиваю можно именно в самом документе получить ссылку на само себя...?

А это как понимать? smile

PM ICQ   Вверх
Aliance
Дата 22.5.2005, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



Цитата(Mal @ 23.5.2005, 00:42)
А чем весь документ от строки не отличается?

Не знаю smile Вот и я хочу узнать, но для этого нужен пример с документом, а не со строкой.

Цитата(Mal @ 23.5.2005, 00:42)
А это как понимать?

Млин. Незнаю как объяснить еще:
Есть файл index.php, там пишем:
Код

привет, это я, сегодня %time% часов!


А браузер должен получить такой код в этой же страничке:
Код

привет, это я, сегодня <b>69</b> часов!

PM MAIL WWW ICQ Skype   Вверх
Mal Hack
Дата 22.5.2005, 23:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Код
<?php
$code = file_get_contents( "file.txt" );
print preg_replace( "#%(.+?)%#ie" , "hl_do( '\\1' )" , $code , TRUE );
function hl_do( $text )
 {
  switch( $text )
   {
     case "test": return "<b>bla-bla-bla</b>"; break;
   }
 }
?>

При этом текстоый файлл не имеет отношения к PHP.
PM ICQ   Вверх
Aliance
Дата 23.5.2005, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



нет, опять не-то. Я же написал
Цитата(Aliance @ 23.5.2005, 00:51)
получить такой код в этой же страничке:

Т.е. $code должна ссылатся на тот документ, где она написана // грубо говоря

*окончательно обессилив, ушел спать*

PM MAIL WWW ICQ Skype   Вверх
Mont
Дата 23.5.2005, 04:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Vingrad developer
Сообщений: 274
Регистрация: 13.11.2004
Где: Altay

Репутация: 8
Всего: 12



с трудом но вроде понял... smile
так если у тебя в этом же файле написано:
Код

привет, это я, сегодня %time% часов!


значит тебе просто надо это дело писать не ввиде HTML, а в ПХП выводить через echo, или print. Ну а там соответственно подставляй какие хочешь значения.

но это конечно если я тебя правильно понял smile


--------------------
"Если однажды Вдруг
Меня не окажется вовсе
в заповедной заветной тарелке
Твоего праведного сновидения
Знай - Неуловимые мстители настигли меня."
© Егор Летов
PM MAIL ICQ   Вверх
IZ@TOP
Дата 23.5.2005, 08:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Я понял что ты хочешь. Нужно заменить текст в вызываемом РHTML документе?
Тогда извращаемся след. образом:

Код

<?php
ob_start();
?>
<html>
...
<body>
bla-bla %text% ... la-la-la..
</body>
</html>
<?php
$buff = ob_get_clean();
str_replace('%text%', 'bla-bla2', $buff);
?>


Но это ИМХО уже изврат полный. Выноси содержимое в отдельный файл. К примеру index.tpl, потом читай, потом заменяй, и выводи.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0596 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.