|
|
|
| Есть html файл file.html, с текстом
<html>
<body>
%BANNER[YANDEXA]%
<br><br>
%BANNER[YANDEXB]%
</body>
</html>
|
Обрабатываю это файлом index.php с заменой
<?php
$_TPL = file_get_contents("file.html");
$_TPL = preg_replace("#\%BANNER\[(.+)\]\%#isU","$1",$_TPL);
echo $_TPL;
?>
|
На выходе получается
<html>
<body>
YANDEXA
<br><br>
YANDEXB
</body>
</html>
|
Значит идем по верному пути. Но мне нужно немного не так. Я хочу поставить значения из переменных $_BANNER["ххххххх"]
Делаю так:
<?php
$_BANNER["YANDEXA"] = "это первый баннер яндекса";
$_BANNER["YANDEXB"] = "это второй баннер яндекса";
$_TPL = file_get_contents("file.html");
$_TPL = preg_replace("#\%BANNER\[(.+)\]\%#isU",$_BANNER["$1"],$_TPL);
echo $_TPL;
?>
|
Но в этом случае не получается. Не знаю как правильно написать имя переменной, ведь должно получится:
<html>
<body>
это первый баннер яндекса
<br><br>
это второй баннер яндекса
</body>
</html>
|
Как правильно написать значения функции preg_replace, чтобы получилось, как в коде выше? | |
|
|
|
|
|
|
|
для: caman
(22.12.2008 в 10:37)
| | потребуется PREG-опция e (исполнение заменяющего выражения) либо вызов preg_replace_callback()
но с ним труднее, поскольку $_BANNER у Вас не глобальный. | |
|
|
|
|
|
|
|
для: Trianon
(22.12.2008 в 10:58)
| | погуглил, не нашел PREG-опция e (исполнение заменяющего выражения)
Может пример? или ещё что посоветуете? | |
|
|
|
|
|
|
|
для: Caman
(22.12.2008 в 11:27)
| | Имеется ввиду модификатор "e":
<?php
$_TPL = preg_replace("#\%BANNER\[(.+)\]\%#isUe", 'isset($_BANNER["$1"]) ? $_BANNER["$1"] : ""', $_TPL);
?>
|
| |
|
|
|
|
|
|
|
для: BinLaden
(22.12.2008 в 12:09)
| | к сожалению так не работает. Пошёл другим способом.
<?php
define("YANDEXA","первый баннер");
define("YANDEXB","второй баннер");
$_TPL = preg_replace("#\%BANNER\[(.+)\]\%#e","$1",$_TPL);
?>
|
Спасибо за подсказку с модификатором /e | |
|
|
|
|
|
|
|
для: Caman
(22.12.2008 в 12:29)
| | Так небезопасно. В случае, когда значение, получаемое из скобочек, будет окружено кавычками ничего не произойдет. А так, может быть передан фактически любой код, поэтому шаблонизатор будет неважный. | |
|
|
|
|
|
|
|
для: BinLaden
(22.12.2008 в 21:06)
| | А как можно исправить. Как добавить в это выражение, что берешь всё внутри, кроме кавычек? | |
|
|
|