敏感词汇过滤
假如用户输入了
$str="输入内容123";
下了个abc.txt,内容为,大概一千条
坏蛋|1<br /> 火枪|1<br /> 超级大坏蛋|1<br /> ....
如何用这个txt文件检查过滤$str1;要效率,求支招
分享到:
更多
------解决方案--------------------
以 http://bbs.csdn.net/topics/390221822 的 ttrie 类为例
显然已经满足你的需要了
输出结果时连接数组为串就可以了
如果是想加亮关键字,可以这样
其实渔已经给你了,鱼还是自己动手的好
为了使实例化的对象得以复用,还应在 match 方法开始处加入
------解决方案--------------------
以 http://bbs.csdn.net/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 />
Array<br />
(<br />
[0] => 输入内容<br />
[1] => 坏蛋<br />
[2] => 123<br />
)<br />
*/<br />
<br />
//去掉字典字<br />
$trie->savematch = 0;<br />
print_r($trie->match($s));<br />
/* 得<br />
Array<br />
(<br />
[0] => 输入内容<br />
[1] => 123<br />
)<br />
*/<br />
显然已经满足你的需要了
输出结果时连接数组为串就可以了
如果是想加亮关键字,可以这样
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 />
以重新初始化数据指针

















