敏感词(DFA算法) PHP实现
2018-01-31 16:07
225 查看
PHP实现DFA算法
敏感词过滤的算法原理之DFA算法 http://www.cnblogs.com/zyguo/p/4705086.html
<?php $obj = new DFA(); $obj->addKeyWord('王八蛋'); $obj->addKeyWord('王八羔子'); $obj->addKeyWord('香烟'); $obj->addKeyWord('狗儿子'); $obj->getHashMap(); var_dump($obj->searchKey('王八蛋')); var_dump($obj->searchKey('王八')); class DFA { private $arrHashMap = []; public function getHashMap() { print_r($this->arrHashMap); } public function addKeyWord($strWord) { $len = mb_strlen($strWord, 'UTF-8'); // 传址 $arrHashMap = &$this->arrHashMap; for ($i=0; $i < $len; $i++) { $word = mb_substr($strWord, $i, 1, 'UTF-8'); // 已存在 if (isset($arrHashMap[$word])) { if ($i == ($len - 1)) { $arrHashMap[$word]['end'] = 1; } } else { // 不存在 if ($i == ($len - 1)) { $arrHashMap[$word] = []; $arrHashMap[$word]['end'] = 1; } else { $arrHashMap[$word] = []; $arrHashMap[$word]['end'] = 0; } } // 传址 $arrHashMap = &$arrHashMap[$word]; } } public function searchKey($strWord) { $len = mb_strlen($strWord, 'UTF-8'); $arrHashMap = $this->arrHashMap; for ($i=0; $i < $len; $i++) { $word = mb_substr($strWord, $i, 1, 'UTF-8'); if (!isset($arrHashMap[$word])) { // reset hashmap $arrHashMap = $this->arrHashMap; continue; } if ($arrHashMap[$word]['end']) { return true; } $arrHashMap = $arrHashMap[$word]; } return false; } }
敏感词过滤的算法原理之DFA算法 http://www.cnblogs.com/zyguo/p/4705086.html
相关文章推荐
- Java DFA算法实现敏感词过滤
- DFA算法 及java版本实现敏感词过滤
- Java实现DFA算法对敏感词、广告词过滤功能示例
- 基于DFA实现的敏感词过滤算法及在JFinal中的应用
- Java实现DFA算法进行敏感词过滤
- DFA算法实现Java敏感词过滤
- Java使用DFA算法实现敏感词过滤
- DFA算法 及java版本实现敏感词过滤
- Java实现DFA算法 实现敏感词过滤
- iOS敏感词过滤,DFA算法的OC实现
- java实现敏感词过滤(DFA算法)
- java利用DFA算法实现敏感词过滤功能
- DFA 算法实现敏感词过滤(python 实现)
- Java使用DFA算法实现过滤多家公司自定义敏感字功能详解
- DFA算法实现过滤多家公司自定义敏感字
- 简单实现java DFA算法对敏感词过滤
- 高效敏感词过滤JAVA实现(DFA算法)
- 基于DFA算法实现过滤敏感词
- DFA算法实现Java敏感词过滤
- java实现敏感词过滤 dfa算法实现