非法字符检查
判断一个字符串是否非法,我是这么做的,把非法字符存到数据库中,再把要检查的字符串转换成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);
这个效率高吗... 如果有条件的话我应该会用 ElasticSearch 服务,在里面定义敏感词,效率应该更高点,节省点 MySql 的性能。其实大厂会提供敏感词过滤的 Api 服务,也支持自己定义一些他们没有的敏感词,这个效果待考究,我只见过有,没用过。