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

时间:2015-09-21 11:22:52

标签: php regex preg-replace

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

说实话,我只想允许除常规字母和数字以外的其他字符:'-): ......等等其他。相当多的字符将允许某人写一个常规短语。

我是以正确的方式去做的吗? 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;

}

2 个答案:

答案 0 :(得分:0)

[^A-Za-z0-9\s] 将允许来自A-Z或a-z的字符或来自0-9和空格的数字。 \s代表空格 如果您想要添加某些符号,只需使用\进行转义,如果它们在$之类的正则表达式中使用,则会显示为[^\$]

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

答案 1 :(得分:0)

怎么样:

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

这将取代所有不是字母数字或'):-或空格的东西。您可以在角色类中添加其他想要的角色。