str_replace заменяет строку раньше, чем надо

109
01 июня 2021, 01:00

В общем есть файл funtions.php

function template($name) {
    include $name.'.php';
}

Тут всё понятно. Затем идёт файл main.php

$main = file_get_contents('main.tpl');
$main = str_replace('{static}',template('static'),$main);
echo $main;

Вроде бы понятно зачем он нужен. Дело в том, что в main.php файл static.php подключается, хотя в main.tpl нету строки {static}

Answer 1

Исходя из логики и документации можно предположить, что функция str_replace ожидает вторым параметром значение, а не функцию. Поэтому и происходит вызов template раньше поиска замены. Если static файл, который вы подключаете в template содержит html код - он будет вставлен как есть в поток вывода. От того полагаю у вас сначала идет вывод static.php а затем echo $main.

READ ALSO
Помогите объединить строки в массиве PHP 7.1

Помогите объединить строки в массиве PHP 7.1

Помогите разобраться с массивами PHP

155
Зачем HashSet и т.д. наследуют и AbstractSet и Set

Зачем HashSet и т.д. наследуют и AbstractSet и Set

Ведь класс AbstractSet имплементит SetТак зачем реализациям повторно его имплементить?

114
Как эффективно отладить java-приложение?

Как эффективно отладить java-приложение?

Допустим, у меня есть десктопное приложениеУ него есть свои кнопки, нажимая на которые выполняются различные методы

284
Деплой телеграм бота Java на Heroku

Деплой телеграм бота Java на Heroku

Есть телеграм бот написанный на JAVA - https://githubcom/altmf/questbot

178