PHPソリューション@ブラックリストフィルタリング
1305 ワード
ソリューションの解決目標:一部のブラックリストをフィルタ処理する
出力:
function is_spam($text, $file, $split =':', $regex =false){
$handle = fopen($file,'rb');
$contents = fread($handle, filesize($file));
fclose($handle);
$lines = explode("n", $contents);
$arr = array();foreach($lines as $line){
list($word, $count)= explode($split, $line);if($regex){
$arr[$word]= $count;
}else{
$arr[preg_quote($word)]= $count; }}
preg_match_all("~".implode('|', array_keys($arr))."~", $text, $matches);
$temp = array();foreach($matches[0]as $match){if(!in_array($match, $temp)){
$temp[$match]= $temp[$match]+1;if($temp[$match]>= $arr[$word]) { returntrue; } }}returnfalse; } $file ='spam.txt'; $str ='This string has cat, dog word';if(is_spam($str, $file)) {
echo 'this is spam';}else{
echo 'this is not spam';}
出力:
ab:3dog:3cat:2monkey:2