#string #expand
#строка #Развернуть
Вопрос:
у меня есть файл со следующими данными
это текстовый файл в формате html $testarray[‘G’]
я использую этот скрипт, но он не работает должным образом.
<?php $testarray=array();
$testarray['G']=100;
$result222 =file_get_contents(realpath('file.php'));
printf($result222);?>
я хочу этот скрипт, распечатайте строку ниже
this is a text file with html format 100
я не хочу использовать функцию include или require, потому что пользователь может вставить php-код в этот файл, и я не хочу, чтобы пользователь мог использовать php-коды в этом файле
кто-нибудь может мне помочь? большое спасибо
Ответ №1:
Если вы знаете строку, в которой вы ожидаете выполнить замену, вы всегда можете сделать это вручную с помощью str_replace(). Однако, похоже, вы хотите иметь возможность подставлять произвольные переменные в строку, чего я умоляю вас не делать. Вы предоставляете этому PHP-скрипту слишком много возможностей, как есть. Я могу придумать несколько эксплойтов с самого начала, таких как внедрение суперглобальных значений среди простых имен переменных, вызывающих перебор.
Редактировать: теперь я понимаю, что я также не дал вам прямого ответа, который соответствует вашему запросу: функция eval (). Вы должны быть в состоянии создать строку, которая присваивает содержимое файла переменной, которая должна выполнять замену переменных анализатором PHP. Пожалуйста, не используйте это, но если вы это сделаете, будьте очень осторожны.
Комментарии:
1. я не знаю, в какой строке я ожидаю выполнить замену.
Ответ №2:
я использовал приведенный ниже скрипт
$result222 =file_get_contents(realpath('file.php'));
$result222=str_replace(array("<?","?>")," ",$result222);
print eval("return<<<ENDEVALn$result222nENDEVAL;n");