Как я могу использовать одинарные кавычки с вложенными вызовами eval ()?

Я пытаюсь использовать одинарные кавычки с вложенными вызовами eval():

eval('eval(\'echo 'hi\';\');');

Однако это вызывает следующую ошибку:

синтаксическая ошибка, неожиданное «привет» (T_STRING)

Как я могу использовать одинарные кавычки и устранить эту ошибку?

2

Решение

У вас проблема с выходом из одинарных кавычек. Вы можете использовать двойные кавычки вместо"hi" вместо 'hi':

eval('eval(\'echo "hi";\');');

Если вам нужно использовать одинарные кавычки, обратные слэши, которые выходят из одинарных кавычек, сами должны быть экранированы парой дополнительных обратных косых черт (\\); то есть:

eval('eval(\'echo \\\'hi\\\';\');');

Это дает:

Привет

Как вы можете себе представить, это быстро запутается, когда уровень вложенности возрастет.

Стоит отметить, что eval() считается опасным, и вы должны использовать его только в очень преднамеренных обстоятельствах, когда вы тщательно оценили, что нет риска в его использовании, и нет лучших способов достичь того, что вы пытаетесь сделать.

Как указано в PHP документация:

предосторожность eval() Языковая конструкция очень опасна, потому что она позволяет выполнять произвольный код PHP. Таким образом, его использование не рекомендуется. Если вы тщательно проверили, что нет другого выбора, кроме как использовать эту конструкцию, обратите особое внимание на то, чтобы не передавать какие-либо данные, предоставленные пользователем, без надлежащей проверки их заранее.

Стоит поискать переполнение стека для некоторых обсуждение его использования.

Надеюсь это поможет 🙂

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector