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


Regex replace for PHP $_POST and $_GET variables

我想对每个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相比,这有一个优点,因为它是递归的,并且将为数组中的数组调用函数。 例如,如果您提交复选框或多选,则子数组可能需要对其执行相同的处理。