PHP: включить/требовать файл, который не был должным образом экранирован с помощью <?php ?>

Я обнаружил, что экспорт PHP phpMyAdmin не включает тег <?php в начале файла. То есть содержимое файлов выглядит примерно так:

/* `production`.`people` */
$people = array(
  array('id' => '999','name_first' => ...

Вместо этого:

<?php
/* `production`.`people` */
$people = array(
  array('id' => '999','name_first' => ...

По сути, это нарушает include и require, поскольку код будет интерпретироваться как HTML, а не PHP.

Как мне загрузить и запустить код, чтобы получить массив данных? Я знаю, что eval — это плохо, но я не знаю других способов добиться этого.

Для справки: это будет выполняться только в средах разработки и тестирования, но не в рабочей среде.

eval является злом при использовании с пользовательскими данными. Если вы доверяете данным, в данном случае, если вы доверяете phpMyAdmin, вы можете без проблем использовать eval. Если вы не доверяете данным, вы в любом случае не захотите их include.
Blackhole 04.07.2024 17:59
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
69
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете просто вручную добавить тег <?php в начале содержимого файла, прежде чем включать его или требовать его. Это позволяет избежать использования eval.

Это может помочь:

<?php
$filePath = 'path/to/file.php';

$fileContent = file_get_contents($filePath);

if (strpos($fileContent, '<?php') !== 0) {
    $fileContent = "<?php\n" . $fileContent;
}

$tempFilePath = 'path/to/temp_file.php';
file_put_contents($tempFilePath, $fileContent);

include $tempFilePath;

unlink($tempFilePath);

print_r($people);

Вы можете превратить это в функцию.

Другие вопросы по теме