正则表达式替换PHP $ _POST和$ _GET变量

时间:2014-11-14 17:38:35

标签: php regex

我想将函数应用于每个PHP POST或GET变量:

$_GET["some_variable"] -> some_function($_GET["some_variable"])

$_POST["some_variable"] -> some_function($_POST["some_variable"])

有关正则表达式匹配和替换我的文件中出现的任何建议吗?

3 个答案:

答案 0 :(得分:2)

您可以使用array_map function在数组的每个元素上调用函数:

$modifiedGet = array_map(some_function, $_GET);

$modifiedPost = array_map(some_function, $_POST);

答案 1 :(得分:0)

这是一个坏主意。考虑一些代码,如

<?php
   $_POST['override'] = 'some override value';

除非您想教授替换函数PHP语法规则,否则最终会使用

<?php
    some_function($_POST['override']) = 'some override value';

这是语法错误:Can't use function return value in write context

答案 2 :(得分:-1)

如果您要在评论中说明原因,那么我可以修正错误(如果有的话)。据我所知,这是一种比接受的答案更好的调用方法,因为它是递归的并且可以在子数组上工作。如果不是,我想知道原因。

您可以使用array_walk_recursive为数组中的每个值调用一个函数:

function walk_function(&$value) {
    $value = some_function($value);
}
array_walk_recursive($_GET, 'walk_function');
array_walk_recursive($_POST, 'walk_function');

http://php.net/manual/en/function.array-walk-recursive.php

这比array_map更有优势,因为它是递归的,并且将为数组中的数组调用函数。例如,如果您提交复选框或多选,则会有子阵列可能需要对它们执行相同的处理。