非法字符检查

判断一个字符串是否非法,我是这么做的,把非法字符存到数据库中,再把要检查的字符串转换成sql 语句,把拼接好的 sql 语句 到数据库中查询,有查到就是非法字符,请问还有更好的方法吗?
代码:

    $str = $_POST['str'];

    $len = intval(strlen(trim($str)));

    $where = " where name = '$str'";
    for ($start=0, $l=$len; $start < $len; $start++, $l--) {
        for ($end=1; $end < $l+1; $end++) {
            $name = trim(substr($str, $start, $end));
            if (!empty($name)) {
                $where .= " or name = '$name'";
            }
        }
    }

    $sql = "SELECT id FROM illegal_character".$where." LIMIT 1";

    $illegalCharacter = $db->queryOne($sql);
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
最佳答案

这个效率高吗... 如果有条件的话我应该会用 ElasticSearch 服务,在里面定义敏感词,效率应该更高点,节省点 MySql 的性能。其实大厂会提供敏感词过滤的 Api 服务,也支持自己定义一些他们没有的敏感词,这个效果待考究,我只见过有,没用过。

2年前 评论
Witcier (楼主) 2年前
讨论数量: 2
2年前 评论
Witcier (楼主) 2年前

这个效率高吗... 如果有条件的话我应该会用 ElasticSearch 服务,在里面定义敏感词,效率应该更高点,节省点 MySql 的性能。其实大厂会提供敏感词过滤的 Api 服务,也支持自己定义一些他们没有的敏感词,这个效果待考究,我只见过有,没用过。

2年前 评论
Witcier (楼主) 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!