PHP -从数据库输入和更新中过滤不需要的元素


PHP - Filter unwanted elements from database input and update

我使用下面的方法从数据库中插入或更新的所有内容中删除不需要的字符。

老实说,我只想允许以下字符,而不是普通的字母和数字:', -, ), :…还有其他一些。相当多的字符可以让人写出一个常规的短语。

我做得对吗?preg_replace当前从字符串中去掉空格。我怎样才能让它停止?我如何添加想要的字符preg_replace?

public function strip($arr = array())
{
    if (!is_array($arr) || !count($arr))
    {
        return array();
    }
    $returnArray = array();
    foreach($arr as $key => $val)
    {
        $val = $this->db->mysqli->real_escape_string($val);
        $val = strip_tags($val);
        //$val = preg_replace("/[^A-Za-z0-9]/", '', $val);
        $returnArray[$key] =  $val;
    }
    return $returnArray;
}

[^A-Za-z0-9's]将允许字符从A-Z或A-Z或数字从0-9和空白。's代表空白如果你想添加某些符号,你只需要用'转义它们,如果它们在正则表达式中使用,如$,它看起来像这样[^'$]

如果您需要帮助创建正则表达式,您可以使用Regex101.com

如何:

$val = preg_replace("/[^A-Za-z0-9'):'s-]/", '', $val);

这将替换所有非字母数字或'):-或空格的内容。您可以在字符类中添加所需的其他字符。