敏感词汇过滤
假如用户输入了
$str="输入内容123";
下了个abc.txt,内容为,大概一千条
坏蛋|1<br />火枪|1<br />超级大坏蛋|1<br />....
如何用这个txt文件检查过滤$str1;要效率,求支招
敏感词汇过滤
假如用户输入了
$str="输入内容123";
下了个abc.txt,内容为,大概一千条
坏蛋|1<br />火枪|1<br />超级大坏蛋|1<br />....
如何用这个txt文件检查过滤$str1;要效率,求支招
——解决方案——————–
以 http://bbs.gaodaima.com/topics/390221822 的 ttrie 类为例
trie = new TTrie;<br />foreach(file('abc.txt') as $r) $trie->set(strtok($r, '<br><font color='#FF8000'>------解决方案--------------------</font><br>'));<br />$s =<<< TXT<br />输入内容坏蛋123<br />TXT;<br />//仅识别<br />print_r($trie->match($s));<br />/* 得<br />Arr<strong>)本文来(源gaodai#ma#com搞@@代~&码*网2</strong><pre>搞代gaodaima码
ay
(
[0] => 输入内容
[1] => 坏蛋
[2] => 123
)
*/
//去掉字典字
$trie->savematch = 0;
print_r($trie->match($s));
/* 得
Array
(
[0] => 输入内容
[1] => 123
)
*/
显然已经满足你的需要了
输出结果时连接数组为串就可以了
如果是想加亮关键字,可以这样
class mytrie extends ttrie {<br /> function b() {<br /> $this->buffer[] = '<b>' . array_pop($this->buffer) . '<b />';<br /> }<br />}<br /> <br />$trie = new mytrie;<br />foreach(file('abc.txt') as $r) $trie->set(strtok($r, '<br><font color='#FF8000'>------解决方案--------------------</font><br>'), 'b');<br />$s =<<< TXT<br />输入内容坏蛋123<br />TXT;<br />print_r($trie->match($s));<br />/* 得<br />Array<br />(<br /> [0] => 输入内容<br /> [1] => <b>坏蛋<b /> 《== 这个就被突出显示了<br /> [2] => 123<br />)<br />*/<br />
其实渔已经给你了,鱼还是自己动手的好
为了使实例化的对象得以复用,还应在 match 方法开始处加入
$this->buffer = array();<br /> $this->input = 0;<br /> $this->backtracking = 0;<br />
以重新初始化数据指针