Проблема с регулярным выражением

shureen

Милорд Лось Кристофер
Проблема с регулярным выражением

Доброго времени суток! Возникла такая проблема:
Я хочу отделить PHP код от HTML, но в html мне надо использовать переменные PHP, чтобы не использовать php в html вообще я хочу чтобы переменные были записаны в таком виде:
{ПЕРЕМЕННАЯ}
для этого я придумал фунцию:
PHP:
function name ($filename)
{
$html = join("", file($filename);
$html = ereg_replace ("(\{([A-Z]{3,15})\})", "$\\2", $html);
echo $html;
}
Проблема в принципе в следующем:
Допустим в переданном файле есть строка:
PHP:
<html>
<head>
<title>{TITLE}</title>
...
и переменная $TITLE известно что равна "Название сайта". Всё нормально заменяеться как я хотел, но почему-то при выводе того что получилось так и выводится $TITLE вместо "Название сайта", подскажите, пожалуйста, что здесь не так!
Заранее благодарю всех откликнувшихся!!!
 

Andreika

"PHP for nubies" reader
Всё нормально заменяеться
как заменяется? и с чего ты вдруг взял, что если так заменять, то будет значение переменной?
 

shureen

Милорд Лось Кристофер
как заменяется? и с чего ты вдруг взял, что если так заменять, то будет значение переменной?
Так и заменяется:
...
<title>$TITLE</title>
...
Ведь когда выводишь переменную через echo в кавычках (""), то всё работает, а почему тогда в этом случае не должна пахать?
 

Andreika

"PHP for nubies" reader
shureen
вот такой несправедливый этот мир %)

PHP:
$title = 'aaaa';
$str = '<HTML><TITLE>{title}</TITLE></HTML>';
echo preg_replace('#\{([a-z]+)\}#ie','$\\1',$str);
тока не копируй, а на изучение тебе
 

shureen

Милорд Лось Кристофер
Спасибо большое!!! Всё работает! А всё-таки подскажите в чём проблема была? В апострофах или в # ... #ie? А то я токое впервые вижу!
 

Andreika

"PHP for nubies" reader
чет даже в мануал тыкнуть некуды.

echo "$var"; - var имя переменной
echo "$\\2" - \\2 на имя переменной не тянет, обычный текст

# ... # - начало и конец регулярного выражения.. можно использовать // и некоторые другие символы
e - выполняет получившийся после замены код.. т.е. $\\2 -> $title а потом его [m]eval[/m]('$title')
 
Сверху