В настоящее время я работаю над проектом, в котором я должен сохранить some PHP code
в базе данных, я сохраняю код с помощью PHP tags
.
Но я не понимаю, как я могу получить код, точно такой же, как и в базе данных.
Я пробовал следующие методы:
a) Прямое извлечение: когда я извлекаю базу данных непосредственно, значение $ row ['code'] пустое
b) using eval (): Когда я использую eval (), я получаю синтаксическую ошибку:
syntax error, unexpected '<' in H:\xampp\htdocs\trycodeonline\testing.php(27) : eval()'d code on line 1
c) используя eval () без php-тегов: когда я удаляю php-коды, я получаю результат вместо кода, например, я хочу напечатать echo "hello"
но он печатает «привет»,
Итак, как я могу напечатать PHP-код?
Если вы действительно хотите это сделать, вы можете использовать eval (), поскольку ваш метод c) предлагает:
$var // your variable with the data from the DB <?php echo eval("?>". $var ."<?") ?>
Существует много законных прецедентов, в которых вы хотите хранить команды PHP в базе данных, и я лично нахожу крик «не делай этого», не зная обстоятельств немного бесполезно.
В любом случае, как уже отмечалось в разных потоках, есть проблемы с безопасностью и другие ловушки с использованием этого подхода, и я бы рекомендовал против него. Это упростит отладку и повысит потенциальную уязвимость безопасности, и так далее …
Прочитайте этот пост и этот пост, чтобы узнать больше о ловушках использования eval ().
Строки highlight_string отлично работают
$str=highlight_string('<?php echo "hello"; ?>',true); echo $str;
Преобразуйте любой алфавитно-цифровой символ в эквивалент HTML (т. Е. Пробел), а затем сохраните его в своей базе данных. Тогда ваш запрос может прямо из дерева использовать его в представлении.
Но я не понимаю, как я могу получить код, точно такой же, как и в базе данных.
Ну, если вы не можете этого сделать, задайте вопрос о базе данных (пожалуйста, после того, как вы прошли курс программирования PHP и базы данных). Потому что, если это не сработает, остальное – это совершенно другая история.