非法字符检查

判断一个字符串是否非法,我是这么做的,把非法字符存到数据库中,再把要检查的字符串转换成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);
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

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

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

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

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

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