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

97
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

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

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

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

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

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

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

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

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

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

166