php развернуть строку из file_get_contents

#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");