非法字符检查

判断一个字符串是否非法,我是这么做的,把非法字符存到数据库中,再把要检查的字符串转换成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);
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
最佳答案

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

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

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

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

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