[php,$_POST] Присвоить данным из $_POST наименование переменной

dimidrol
На сайте с 29.09.2005
Offline
191
632

Добрый день.

В скриптах приходится использовать такую конструкцию.

if (isset($_POST['id'])) $id=htmlspecialchars($_POST['id']);

Но если элементов много, то получается приличное количество строк. Возможно ли сделать код, который для любой переменой из $_POST['blablabla'] сформирует $blablabla?

Иногда полезно проигрывать - это держит тебя в тонусе... Мне так рассказывали (с) Shark Покупаю сайты (стройка/отделка/стройматериалы) по адекватной цене. Предложения в личку. Траф - обязателен
R
На сайте с 18.12.2009
Offline
92
#1


foreach($_POST as $key => $value) {
${$key} = htmlspecialchars($value);
}
C
На сайте с 04.02.2005
Offline
291
#2

if (isset($_POST['id'])) $id=htmlspecialchars($_POST['id']); 

так как $_POST - массив

http://ua1.php.net/array_walk - может быть поможет;

Но проверять наличие пост параметра все равно придется.

B1
На сайте с 13.12.2012
Offline
28
#3

extract поможет.

Константин Валентинович
На сайте с 23.11.2013
Offline
64
#4
dimidrol:
if (isset($_POST['id'])) $id=htmlspecialchars($_POST['id']);

А у Вас id случайно не целое число?

Такие вещи удобно через функции делать (можете поискать информацию по плейсхолдерам).

Если приведете немного больше кода, чтобы было видно для чего происходит обработка, то приведу Вам пример.

Если для приведенного Вами примера и id у Вас целое число, то функция будет такой:

function i($id) {

if (isset($id)) {

$id = intval($_POST['id']);

return $id;

}

}

Вызывать функцию так (т.е. пишите вместо приведенной Вами строки):

i($_POST['id']); // Такая запись вместо Вашей строки

Аналогичным образом добавляется обработка строк и другие обработки.

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

siv1987
На сайте с 02.04.2009
Offline
427
#5

$post_data = array_map('htmlspecialchars', $_POST);

или array_walk, так как POST может быть еще и многомерным

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий