преобразовать строку в имя переменной - PullRequest
2 голосов
/ 05 февраля 2011

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

Например,

ЕслиСтрока $foo = "$_POST['email']"; передана. Мне нужно извлечь значение $_POST['email'] и сохранить его как $example, чтобы $_POST['email'] == $example вернул true.Не существует практически никакого способа передачи значения непосредственно в функцию (переменная должна быть динамической, чтобы сделать функцию полезной).

Я действительно думал об использовании переменных, но они не работают с суперглобальными переменными, которые будутбыть основным источником нужных мне значений.

В принципе, есть ли способ получить значение переменной (обычно в суперглобальном массиве) с нужной переменной в виде строки?

ПустьЯ знаю, если нужно больше деталей.

Спасибо

Ответы [ 2 ]

4 голосов
/ 05 февраля 2011

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

Примечание: эта функцияпредоставляется только для примера, моя реальная рекомендация ниже.

function fetchFromPost($key) {
  if(isset($_POST[$key]) {
    return $_POST[$key];
  } else {
    return null; //or do whatever you want to do in case key is not found
  }
}

Фактически filter_input () , который позволяет вам выбрать входной массив, ключ и санитарный фильтр дляиспользуется, уже есть для вас

2 голосов
/ 05 февраля 2011

Это возможно, хотя я серьезно сомневаюсь, что вы должны использовать это. Это позволяет внедрять PHP и делает ваш исходный код очень уязвимым , если вы не знаете, откуда взялась строка:

<?
function eval_expression($expression)
{
    eval("\$temp = $expression;");
    return $temp;
}

// Usage:
echo eval_expression("\$_GET['plop']");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...