eval — вычисляет строку как PHP-код


Eval — вычисляет строку как PHP-код

(PHP 4, PHP 5, PHP 7)

eval — Выполняет код PHP, содержащейся в строке

Описание

Выполняет строку, переданную в параметре code , как код PHP.

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

Список параметров

Выполняемая строка кода PHP.

Код не должен быть обернут открывающимся и закрывающимся тегами PHP, то есть строка должна быть, например, такой ‘echo «Привет!»;’, но не такой ‘ ‘. Возможно переключаться между режимами PHP- и HTML-кода, например ‘echo «Код PHP!»; ?>Код HTML eval() . Таким образом, любые переменные, определенные или измененные в вызове eval() , будут доступны после его выполнения в теле программы.

Возвращаемые значения

Функция eval() возвращает NULL пока не вызывается return, в случае чего возвращается значение, переданное return. С PHP 7, если в исполняемом коде присутствует ошибка, то eval() вызывает исключение «ParseError». До PHP 7 в этом случае возвращается FALSE и продолжается нормальное выполнение последующего кода. Невозможно поймать ошибку парсера в eval() , используя set_error_handler() .

Примеры

Пример #1 Пример функции eval() — простое слияние текста

Оценивать строку как PHP код без использования Eval


Видя , как следует избегать Eval, как вы оцениваете строку как PHP код без использования Eval ? Для примера рассмотрим следующий код:

Я могу получить желаемый результат с помощью Eval , как так — eval(echo $str;); , но Eval это именно то , что я ищу , чтобы избежать.

Вы можете рассматривать это как вопрос удаления двойных кавычек. Но не об этом. Как @AmalMurali указывает, что я прошу здесь how to get the contents of $str evaluated without using eval()

Вы можете макет вашего кода, как это:

Или , может быть , как это, используя sprintf это мой личный фаворит метод рассмотрения дел , как это:

Есть различные варианты, основанные на личном стиле и предпочтениях.

Почему Вы добавляете двойные кавычки, то удалить их? Для простой строки переменного включения вы просто использовать двойные кавычки, как

eval — Оцените строку как код PHP без использования eval

Видя, как следует избегать eval, как вы оцениваете строку как код PHP без использования eval? Например, рассмотрим этот код:

Я могу получить желаемый результат, используя eval as so- eval(«echo $str;»); , но eval — именно то, чего я хочу избежать.

Вы можете рассматривать это как вопрос об удалении двойных кавычек. Но дело не в этом. Как указывает @AmalMurali, я спрашиваю здесь, how to get the contents of $str evaluated without using eval()

    3 3
  • 5 июн 2020 2020-06-05 10:46:22

  • user1720897

3 ответа

Здесь вы действительно хотите использовать двойные кавычки для $ str, чтобы замена переменных могла иметь место.

  • 5 июн 2020 2020-06-05 10:46:24
  • Matteo Tassinari

Почему вы добавляете двойные кавычки, а затем удаляете их? Для простого включения строковой переменной вы просто используете двойные кавычки типа

  • 5 июн 2020 2020-06-05 10:46:23
  • WebChemist


Вы можете разместить свой код следующим образом:

Или, возможно, так, используя sprintf который является моим личным любимым методом обработки таких случаев:

Существуют разные варианты, основанные на личном стиле и предпочтениях.

Оцените строку как код PHP без использования eval

Видя, как следует избегать eval, как вы оцениваете строку как PHP-код без использования eval ? Например, рассмотрим этот код:

Я могу получить желаемый результат, используя eval так: eval («echo $ str;»); , но eval — именно то, чего я хочу избежать.

You might view this as a question of removing the double quotes. But it isn’t about that. As @AmalMurali points out, what I am asking here is how to get the contents of $str evaluated without using eval()

Вычисление выражения в строке

Как сделать так чтобы переменная $rezultat равнялась результату выражения, записанного в $stroka ? (в выражении могут быть операции +-*/() )

4 ответа 4

Кину еще один вариант:

По заданной теме можно почитать:

Мой вариант небольшой, может и костыль, но более универсальный

Вот мой вариант:


Вот ещё один вариант решения.

Единственное «но». Использование eval без серьёзной необходимости и фильтрации входных данных крайне не рекомендуется.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками php или задайте свой вопрос.

Связанные

Похожие

Подписаться на ленту

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2020 Stack Exchange Inc; пользовательское содержимое попадает под действие лицензии cc by-sa 4.0 с указанием ссылки на источник. rev 2020.11.11.35402

Оценивать строку как PHP код без использования Eval [закрыто]

December 2020

808 раз

Видя , как следует избегать Eval, как вы оцениваете строку как PHP код без использования Eval ? Для примера рассмотрим следующий код:

Я могу получить желаемый результат с помощью Eval , как так — eval(«echo $str;»); , но Eval это именно то , что я ищу , чтобы избежать.


Вы можете рассматривать это как вопрос удаления двойных кавычек. Но не об этом. Как @AmalMurali указывает, что я прошу здесь how to get the contents of $str evaluated without using eval()

3 ответы

You can layout your code like this:

Or perhaps like this, using sprintf which is my personal favorite method of handling cases like this:

There are different options based on personal style & preference.

What you really want here is to use double quotes for $str so that variable replacement can take place.

Why are you adding double quotes then removing them? For a simple string variable inclusion you just use double quotes like

Оцените строку как код PHP без использования eval

Видя, как следует избегать eval, как вы оцениваете строку как код PHP без использования eval ? Например, рассмотрим этот код:

Я могу получить желаемый результат, используя eval as so- eval(«echo $str;»); , но eval — именно то, чего я хочу избежать.

Вы можете рассматривать это как вопрос об удалении двойных кавычек. Но дело не в этом. Как указывает @AmalMurali, я спрашиваю здесь, how to get the contents of $str evaluated without using eval()

Вы можете разместить свой код следующим образом:

Или, возможно, так, используя sprintf который является моим личным любимым методом обработки таких случаев:

Существуют разные варианты, основанные на личном стиле и предпочтениях.


Eval — вычисляет строку как PHP-код

eval — вычисляет строку как PHP-код.

Описание

mixed eval (string code_str)

eval() вычисляет строку, заданную в code_str , как код PHP. Помимо всего прочего, это может оказаться полезным для хранения кода в текстовом поле БД для последующего исполнения.

При использовании eval() необходимо помнить о нескольких вещах. Запомните, что передаваемая строка обязана быть правильным кодом PHP, включая окончание операторов точкой с запятой, чтобы разборщик не отвалил на строке после eval() , и правильное escap-ируйте в code_str .

Также помните, что значения, заданные переменным в eval() , останутся действовать затем и в основном скрипте.

Оператор return завершит вычисление строки немедленно. В PHP 4 eval() возвращает FALSE , если не вызвана return() в вычисляемом коде, и в этом случае возвращается значение, передаваемое в return() . В PHP 3 eval() не возвращает значения.

Пример 1. eval() — простое объединение текста

Этот пример выведет:

Подсказка: как всегда при выводе результатов непосредственно в браузер, вы можете использовать функции управления выводом для захвата вывод этой функции и сохранения его, например в string .


Назад Оглавление Вперёд
die Вверх exit

© 2006-2012 Веб-мастер Борисов Виктор Александрович


eval — Оцените строку как код PHP без использования eval

Видя, как следует избегать eval, как вы оцениваете строку как код PHP без использования eval? Например, рассмотрим этот код:

Я могу получить желаемый результат, используя eval as so- eval(«echo $str;»); , но eval — именно то, чего я хочу избежать.

Вы можете рассматривать это как вопрос об удалении двойных кавычек. Но дело не в этом. Как указывает @AmalMurali, я спрашиваю здесь, how to get the contents of $str evaluated without using eval()

    4 3
  • 5 июн 2020 2020-06-05 10:46:22
  • user1720897

3 ответа

Здесь вы действительно хотите использовать двойные кавычки для $ str, чтобы замена переменных могла иметь место.

  • 5 июн 2020 2020-06-05 10:46:24
  • Matteo Tassinari

Почему вы добавляете двойные кавычки, а затем удаляете их? Для простого включения строковой переменной вы просто используете двойные кавычки типа

  • 5 июн 2020 2020-06-05 10:46:23
  • WebChemist

Вы можете разместить свой код следующим образом:

Или, возможно, так, используя sprintf который является моим личным любимым методом обработки таких случаев:

Существуют разные варианты, основанные на личном стиле и предпочтениях.

Eval — вычисляет строку как PHP-код

eval — вычисляет строку как PHP-код.

Описание

mixed eval (string code_str)

eval() вычисляет строку, заданную в code_str , как код PHP. Помимо всего прочего, это может оказаться полезным для хранения кода в текстовом поле БД для последующего исполнения.

При использовании eval() необходимо помнить о нескольких вещах. Запомните, что передаваемая строка обязана быть правильным кодом PHP, включая окончание операторов точкой с запятой, чтобы разборщик не отвалил на строке после eval() , и правильное escap-ируйте в code_str .

Также помните, что значения, заданные переменным в eval() , останутся действовать затем и в основном скрипте.

Оператор return завершит вычисление строки немедленно. В PHP 4 eval() возвращает FALSE , если не вызвана return() в вычисляемом коде, и в этом случае возвращается значение, передаваемое в return() . В PHP 3 eval() не возвращает значения.

Пример 1. eval() — простое объединение текста

Этот пример выведет:

Подсказка: как всегда при выводе результатов непосредственно в браузер, вы можете использовать функции управления выводом для захвата вывод этой функции и сохранения его, например в string .

Илон Маск рекомендует:  Хостинг от coretek.ru - оптимальный хостинг для Вашего сайта
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL