diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..757fee3 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/.idea \ No newline at end of file diff --git a/README.md b/README.md index 6da95a0..e2f1e86 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ Sensitive Fliter for Laravel5 / Lumen based on [tuyuwei/SensitiveWord](https://g ## Install ```shell -composer require "yankewei/laravel-sensitive:~1.0" +composer require yankewei/laravel-sensitive ``` ## For Laravel @@ -47,9 +47,9 @@ Using facade: ```php $interference = ['&', '*']; -$data = ['日本', '滚蛋']; -Sensitive::interference($interference);//添加干扰因子 -Sensitive::addwords($data);//需要过滤的敏感词 +$filename = './words.txt'; //每个敏感词独占一行 +Sensitive::interference($interference); //添加干扰因子 +Sensitive::addwords($filename); //需要过滤的敏感词 $txt = "我说的日本册,滚&蛋不是。。。"; $words = Sensitive::filter($txt); dd($words); diff --git a/demo/index.php b/demo/index.php new file mode 100644 index 0000000..075e251 --- /dev/null +++ b/demo/index.php @@ -0,0 +1,11 @@ +interference($interference); //添加干扰因子 +$sensitive->addWords($filename); +$txt = "我说的日本册,滚&蛋不是。。。"; +$words = $sensitive->filter($txt); +var_dump($words);//string(37) "我说的日本册,***不是。。。" \ No newline at end of file diff --git a/demo/words.txt b/demo/words.txt new file mode 100644 index 0000000..2684ffb --- /dev/null +++ b/demo/words.txt @@ -0,0 +1,2 @@ +日本 +滚蛋 \ No newline at end of file diff --git a/src/Sensitive.php b/src/Sensitive.php index 78942df..75dec40 100644 --- a/src/Sensitive.php +++ b/src/Sensitive.php @@ -32,9 +32,9 @@ public function interference($disturbList = array()) * 添加敏感词 * @param array $txtWords */ - public function addWords(array $wordsList) + public function addWords($filename) { - foreach ($wordsList as $words) { + foreach ($this->getGeneretor($filename) as $words) { $nowWords = &$this->trieTreeMap; $len = mb_strlen($words); for ($i = 0; $i < $len; $i++) { @@ -47,6 +47,24 @@ public function addWords(array $wordsList) } } + /** + * 使用yield生成器 + * @param $filename + * @return \Generator + * @throws \Exception + */ + protected function getGeneretor($filename) + { + $handle = fopen($filename, 'r'); + if (!$handle) { + throw new \Exception('read file failed'); + } + while (!feof($handle)) { + yield str_replace(['\'', ' ', PHP_EOL, ','], '', fgets($handle)); + } + fclose($handle); + } + /** * 查找对应敏感词 * @param $txt