imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Веб-мастеру > Веб-программирование
Опции темы
Старый 28.03.2005, 05:05     # 1
Psionic Vision
Full Member
 
Аватар для Psionic Vision
 
Регистрация: 05.02.2002
Адрес: Underground
Сообщения: 2 110

Psionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собой
[PHP4] Помогите дописать скрипт-шаблонизатор

Вообщем, пытаюсь я тут написать мини шаблонизатор.

main.php:

PHP код:
<?php
    $var1 
"this is var1";
    
$var2 "this is var2";

    
$filename "template.txt";

    
$handle fopen($filename"r");
    
$content fread($handlefilesize($filename));
    
fclose($handle);

    
$content preg_replace("/<%-([A-z0-9]*?)-%>/i""$\\1"$content);

    print(
$content);
?>

template.txt:

Код:
<%-var1-%><%-var2-%>
Проблематичное место - то, на что я заменяю. Выводит ошибку:
Notice: Undefined variable: \1 in /home/public_html/test.php on line 10

Не знаю, как вставить туда нужную переменную. Помогите, плииз. Заранее спасибо.

Последний раз редактировалось Neo; 28.03.2005 в 05:07.
Psionic Vision вне форума  
Старый 28.03.2005, 07:06     # 2
is_absent
::VIP::
 
Аватар для is_absent
 
Регистрация: 27.01.2004
Адрес: Россия. Барнаул
Пол: Male
Сообщения: 417

is_absent Молодецis_absent Молодецis_absent Молодец
Бакс убери

Цитата:
Neo:
"$\\1"
вот тут
__________________
Nunc est bibendum
is_absent вне форума  
Старый 28.03.2005, 07:21     # 3
Psionic Vision
Full Member
 
Аватар для Psionic Vision
 
Регистрация: 05.02.2002
Адрес: Underground
Сообщения: 2 110

Psionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собой
Кто такой бакс и откуда его надо убрать??

Последний раз редактировалось Neo; 28.03.2005 в 07:31.
Psionic Vision вне форума  
Старый 28.03.2005, 08:56     # 4
Sensey
Junior Member
 
Регистрация: 25.12.2002
Сообщения: 114

Sensey Нимб уже пробиваетсяSensey Нимб уже пробивается
бакс - это $
__________________
PHP+MySQL
Sensey вне форума  
Старый 28.03.2005, 10:31     # 5
is_absent
::VIP::
 
Аватар для is_absent
 
Регистрация: 27.01.2004
Адрес: Россия. Барнаул
Пол: Male
Сообщения: 417

is_absent Молодецis_absent Молодецis_absent Молодец
Есть вот это
Цитата:
Neo:
$content = preg_replace("/<%-([A-z0-9]*?)-%>/i", "$\\1", $content);
Надо вот так:
$content = preg_replace("/<%-([A-z0-9]*?)-%>/i", "\\1", $content);
__________________
Nunc est bibendum
is_absent вне форума  
Старый 28.03.2005, 16:41     # 6
Psionic Vision
Full Member
 
Аватар для Psionic Vision
 
Регистрация: 05.02.2002
Адрес: Underground
Сообщения: 2 110

Psionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собой
Ну, тогда ты мена не совсем понял.
Допустим, если нашлось сочетание var1, то мне нужно заменить его на переменную $var1, которая была определена чуть выше =((
Psionic Vision вне форума  
Старый 28.03.2005, 18:18     # 7
is_absent
::VIP::
 
Аватар для is_absent
 
Регистрация: 27.01.2004
Адрес: Россия. Барнаул
Пол: Male
Сообщения: 417

is_absent Молодецis_absent Молодецis_absent Молодец
тогда так:
$content = preg_replace("/<%-([A-z0-9]*?)-%>/ie", "\$\\1", $content);
__________________
Nunc est bibendum
is_absent вне форума  
Старый 28.03.2005, 20:07     # 8
Psionic Vision
Full Member
 
Аватар для Psionic Vision
 
Регистрация: 05.02.2002
Адрес: Underground
Сообщения: 2 110

Psionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собой
Хм.. Не работает.

Вообщем, я это уже реализовал чуть иначе:

PHP код:
        preg_match_all("/<%-([A-z0-9]*?)-%>/i"$template$output);

         foreach (
$output[1] as $value) {
            if (!isset($
$value)) {
                
$template str_replace("<%-$value-%>""<b>Invalid Variable '$value'</b>"$template);
            } else {
                
$template str_replace("<%-$value-%>", $$value$template);
            }
        } 
Только вот почему здесь preg match all возвращает пустой индекс 0, а не индекс 1?
Psionic Vision вне форума  
Старый 28.03.2005, 21:37     # 9
Sheryld
Full Member
 
Регистрация: 29.05.2002
Сообщения: 544

Sheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царстве
вроде там по-умолчанию вот этот флаг PREG_PATTERN_ORDER, в $output[0] тогда должно быть полное совпадение(т.е. набор совпадений полностью удовлетсворяющих шаблону), а его видимо нет.

PREG_SET_ORDER - а если указать вот этот флаг, то тогда в $output[0] первое найденное совпадение(точнее набор совпадений) вообще.

ну а дальше смотри по докам.

p.s. могу и ошибаться
__________________
убрано по просьбе администратора
Sheryld вне форума  
Старый 28.03.2005, 22:21     # 10
Psionic Vision
Full Member
 
Аватар для Psionic Vision
 
Регистрация: 05.02.2002
Адрес: Underground
Сообщения: 2 110

Psionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собой
А что за набор полностью удовлетворяющий совпадению?
Если он не удовлетворяет полностью, значит он не удовлетворяет вообще... Или я чего-то не понимаю...

И еще - если я хочу вызвать фунцкию как замену - не получается...

PHP код:
$template preg_replace("/\[function=([A-z]*)\](.*)\[\/function\]/"doTag('\\1','\\2'), $template); 
В функцию передает неправильный параметр (\1 и \2)... =((

Последний раз редактировалось Neo; 28.03.2005 в 22:31.
Psionic Vision вне форума  
Старый 29.03.2005, 03:32     # 11
Psionic Vision
Full Member
 
Аватар для Psionic Vision
 
Регистрация: 05.02.2002
Адрес: Underground
Сообщения: 2 110

Psionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собой
Вот если бы я только знал как передать функции результаты работа регеха, то все проблемы были бы решены.. =((
Psionic Vision вне форума  
Старый 29.03.2005, 12:22     # 12
Sheryld
Full Member
 
Регистрация: 29.05.2002
Сообщения: 544

Sheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царстве
регулярное выражение — как матрешка.
__________________
убрано по просьбе администратора
Sheryld вне форума  
Старый 29.03.2005, 14:58     # 13
Psionic Vision
Full Member
 
Аватар для Psionic Vision
 
Регистрация: 05.02.2002
Адрес: Underground
Сообщения: 2 110

Psionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собой
Sheryld
Рабочий пример, пожалуйста...
При чем здесь матрешка? =//
Psionic Vision вне форума  
Старый 30.03.2005, 04:13     # 14
Psionic Vision
Full Member
 
Аватар для Psionic Vision
 
Регистрация: 05.02.2002
Адрес: Underground
Сообщения: 2 110

Psionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собой
Что, никто не может помочь?
Я тут заметил одну странную вещь:
Если один параметр, то все работает, если много - то передает только последний.

Т.е.:

$var = preg_replace($searchpattern, funcy('\\1'), $var)

работает, но

$var = preg_replace($searchpattern, funcy('\\1','\\2'), $var)

передает только \\2. А вместо значения \\1 оно передает строку "\1"... Что я делаю не так? Даже если я пишу

$var = preg_replace($searchpattern, funcy('\\2','\\2'), $var)

эффект тот же......

--------------------

Ага, кажется я окончательно понял:
регех передает строку "\1", я обрабатывает ее при получении. Но \1 является числом, и мне нужно чтобы функция-получатель обработала ее, а не строку \1... =((((

Последний раз редактировалось Neo; 30.03.2005 в 05:14.
Psionic Vision вне форума  
Старый 31.03.2005, 04:25     # 15
Psionic Vision
Full Member
 
Аватар для Psionic Vision
 
Регистрация: 05.02.2002
Адрес: Underground
Сообщения: 2 110

Psionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собойPsionic Vision Имеются все основания чтобы гордиться собой
В общем, я уже разобрался сам.
Всем спасибо за отсутствие помощи...
Psionic Vision вне форума  
Старый 31.03.2005, 08:15     # 16
Sheryld
Full Member
 
Регистрация: 29.05.2002
Сообщения: 544

Sheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царстве
и что тебе не понятно? уже и так разжевали все
__________________
убрано по просьбе администратора
Sheryld вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 15:29.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.