Почему не работает код?

12
O
На сайте с 23.09.2014
Offline
76
1195

Здравствуйте. Подскажите почему не выводится результат работы скрипта?


<?php

function out_teg()
{
$ob1 = '444444444';
$output = "<?php ";
$output .= " $ob1;\n";
$output .= "?>";
return $output;
}

print out_teg();

?>
vandamme
На сайте с 30.11.2008
Offline
672
#1

он работает, в исходном коде страницы посмотрите.

PN
На сайте с 22.08.2012
Offline
103
#2
Osavul:
Здравствуйте. Подскажите почему не выводится результат работы скрипта?

да потому что выводится тег, а браузер не показывает сами теги. Это все равно, что вывести echo "<i>"; Тогда уж пишите:


<pre><?php
...
?></pre>
Мой совет помог? Не скупись! Bitcoin 1Lseddet1o1B6odgXQHbGaWGwRkt1Db8Ef Ethereum 0x450f1a17461e25194B7F9226cDEe70173F39e1e1
O
На сайте с 23.09.2014
Offline
76
#3

Ок. Спасибо.

Тогда как мне вывести значение перемененной $ob1 в html файле index.html место своего тега {teg}?


$template = file_get_contents('index.html');
$repl = "[{teg}]";

$ob1 = '444444444';
$output = "<?php\n";
$output .= " echo \$ob1;\n";
$output .= "?>";

$template = preg_replace($repl, $output, $template);
print_r($template);

файл index.html


<!DOCTYPE html>
<html>
<head>
<title>Стартовая страница</title>
</head>

<body>

{teg}

</body>
</html>
PN
На сайте с 22.08.2012
Offline
103
#4

А зачем вы так все усложняете?


$template = file_get_contents('index.html');
$repl = "[{teg}]";
$ob1 = '444444444';
$template = preg_replace($repl, $ob1, $template);
print_r($template);

А я бы сделал вообще так:


$template = file_get_contents('index.html');
$repl = "{teg}";
$ob1 = '444444444';
$template = str_replace($repl, $ob1, $template);
print_r($template);
O
На сайте с 23.09.2014
Offline
76
#5
proksey-net:
А зачем вы так все усложняете?


$template = file_get_contents('index.html');
$repl = "[{teg}]";
$ob1 = '444444444';
$template = preg_replace($repl, $ob1, $template);
print_r($template);


А я бы сделал вообще так:

$template = file_get_contents('index.html');
$repl = "{teg}";
$ob1 = '444444444';
$template = str_replace($repl, $ob1, $template);
print_r($template);

Дело в том что мне также в html шаблоне нужно иногда чтобы размещались php скрипты.

Ну например ввывод переменной <?= $ob1 ?> или более сложнее организовать цикл:


<?php foreach ( $usergroup as $group ): ?>
<li>Номер: <?= $group['id'] ?></li>
<li>Группа: <?= $group['name'] ?></li>
<?php endforeach; ?>

Но в результате никакой вывод при не осуществляется - остается пустое место.

Наверно веной всего функция file_get_contents, которая каким-то образом экранируется php код на html станице 😕

PN
На сайте с 22.08.2012
Offline
103
#6
Osavul:
Дело в том что мне также в html шаблоне нужно иногда чтобы размещались php скрипты.
Ну например ввывод переменной <?= $ob1 ?> или более сложнее организовать цикл:


Но в результате никакой вывод при не осуществляется - остается пустое место.
Наверно веной всего функция file_get_contents, которая каким-то образом экранируется php код на html станице 😕

я вам уже объяснил, ничего не экранируется. Создайте test.html и в него поместите следующий код:


<?php test ?>

На экране вы не увидите НИЧЕГО! Потому что в HTML это просто тег. А если у вас в шаблонах есть PHP-код, то для этого есть функция eval().


function out_teg()
{
$ob1 = '444444444';
$output = " echo $ob1;\n";
eval($output);
}

вот это даст то, что нужно

totamon
На сайте с 12.05.2007
Offline
437
#7
Osavul:
Дело в том что мне также в html шаблоне нужно иногда чтобы размещались php скрипты.

вам стоит почитать о существующих системах шаблонов, прежде чем свои изобретать, если вы хотите использовать php в шаблоне зачем теги {teg}?

зачем шаблон в html? делайте php и просто инклюдьте, зачем вообще тогда чтение файла и подстановка переменных? вы все в кучу пытаетесь смешать)

Домены и хостинг https://8fn.ru/regru | Дедик от 3000р https://8fn.ru/73 | VPS в Москве https://8fn.ru/72 | Лучшие ВПС, ТП огонь, все страны! https://8fn.ru/inferno | ХОСТИНГ №1 РОССИИ https://8fn.ru/beget
O
На сайте с 23.09.2014
Offline
76
#8
totamon:
вам стоит почитать о существующих системах шаблонов, прежде чем свои изобретать, если вы хотите использовать php в шаблоне зачем теги {teg}?
зачем шаблон в html? делайте php и просто инклюдьте, зачем вообще тогда чтение файла и подстановка переменных? вы все в кучу пытаетесь смешать)

Да Вы правы. Я и пытаюсь полностью разделять php и html. Сделал свой простой шаблонизатор который хорошо справляется с выводом одиночных данных, но когда речь дошла к выводу в html шаблоне массива данных в цикле, тут и возникла проблема.

В смарти это реализовано так например:


{foreach $users as $user}
<li>Номер:{$user->id}</li>
<li>Почта:{$user->email}</li>
{/foreach}

Вот хочу и себе чот-то подобное соорудить. Делаю свой велик, готовые шаблонизаторы не подойдут.

А так как такой вариант еще не смог реализовать решил попробовать стандартный способ вывода php:


<?php foreach ( $users as $user ): ?>
<li>Номер:{$user->id}</li>
<li>Почта:{$user->email}</li>
<?php endforeach; ?>

Но и он теперь не проходит из-за использования в шаблонизаторе функции file_get_contents

---------- Добавлено 09.04.2015 в 22:24 ----------

proksey-net:
На экране вы не увидите НИЧЕГО! Потому что в HTML это просто тег. А если у вас в шаблонах есть PHP-код, то для этого есть функция eval().

Использование eval() води бы небезопасно для сайта?

totamon
На сайте с 12.05.2007
Offline
437
#9

http://phpfaq.ru/tpl читать до просветления)

O
На сайте с 23.09.2014
Offline
76
#10
totamon:
http://phpfaq.ru/tpl читать до просветления)

Это стандартный вывод через php. Не решает мой вопрос.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий