我想对每个PHP POST或GET变量应用一个函数:
$_GET["some_variable"] -> some_function($_GET["some_variable"])
$_POST["some_variable"] -> some_function($_POST["some_variable"])
对正则表达式匹配和替换我文件中出现的那些内容有什么建议吗?
您可以使用
array_map
函数在数组的每个元素上调用函数:
$modifiedGet = array_map(some_function, $_GET);
$modifiedPost = array_map(some_function, $_POST);
这是一个坏主意。考虑一些代码,例如
<?php
$_POST['override'] = 'some override value';
除非你想教你的替换函数PHP语法规则,否则你最终会得到
<?php
some_function($_POST['override']) = 'some override value';
这是一个语法错误:Can't use function return value in write context
。
如果您要在评论中投反对票,请在评论中说出原因,以便如果有错误,我可以修复错误。据我所知,这是一种比接受的答案更好的调用方法,因为它是递归的并且适用于子数组。 如果不是,我想知道为什么。
您可以使用 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
相比,这有一个优点,因为它是递归的,并且将为数组中的数组调用函数。 例如,如果您提交复选框或多选,则子数组可能需要对其执行相同的处理。