0

我在转义数据方面遇到了一些问题,或者至少是与它相关的代码的清洁度。

假设,我正在转义一个名为“FirstName”的文本字段,它看起来像这样:

$FirstName = mysqli_real_escape_string($link, $_POST['FirstName']);
$FirstName = preg_replace( "/[<>#$%]/", "", $FirstName);
$FirstName = preg_replace('/\s\s+/', ' ', $FirstName);

无论如何我可以将最后两行放在某种循环中,让我们这样说:

foreach($_POST as $name => $value)
{
    $value = preg_replace( "/[<>#$%]/", "", $value);
    $value = preg_replace('/\s\s+/', ' ', $value);
}

那么我以后要做的就是

$FirstName = mysqli_real_escape_string($link, $_POST['FirstName']);

$_POST['FirstName'] 已经被剥夺了其他字符?

4

1 回答 1

2

当然。使foreach循环按引用而不是按值,如下所示:

foreach($_POST as $name => &$value)
{
    $value = preg_replace( "/[<>#$%]/", "", $value);
    $value = preg_replace('/\s\s+/', ' ', $value);
}

注意前面的 & 符号$value。这意味着$value您在遍历数组时得到的是对数组本身值的引用,而不是该值的副本。

于 2012-08-25T02:57:37.100 回答