ユーザーが投稿するコメントやその他のコンテンツ広告の種類には、一般に次の種類があります:
1: タオバオ アルバイト プラス QQ 123456789 グループ(QQ 番号または WeChat 番号またはその他の数字を含む)
2: タオバオでのアルバイトの場合は、QQ 番号を追加します (英語のキーワード付き)
3: タオバオでのアルバイトの場合は、QQ を追加します ① ① ① ① ① ① (特殊な数字を含む数字)
4: 22222222 (全角タイプの数字)
フィルタリング方法:
通常のルールを使用して句読点、数字、文字を一致させ、置換します広告には通常、QQ 番号などの連絡先情報が含まれるため、連続する数字またはキー文字 (全角および角丸がサポートされています) があるかどうかを判断する文字列の値を調べます。したがって、まずコメントを「純化」して置き換え、全角コメントを半角コメントに変換し、句読点、スペース、文字などの「砂」を削除して、漢字と数字だけを残す必要があります。
例:
$comment= "この $% は (1)8 アーティファクト 3 または 4 の Web サイトです。ぜひ参加してください。④④he@#heqq 1 2 3 4 5 6 7 8″;
1: コンテンツを「精製」し、句読点を削除します
$flag_arr=array('?','!','¥','(',')', ':' ,''',''','"','"','《','》',',','…',' ',',','nbsp','] ',' [','~');????????????
$comment=preg_replace('/s/','',preg_replace("/[[ :punct:]]/ ",'',strip_tags(html_entity_decode(str_replace($flag_arr,'',$comment),ENT_QUOTES,'UTF-8'))));
処理後、$comment は次のようになります: "これは (1) 8 artifact 34 website. B 来て参加してください①④ 笑 qqq12345678"
2: 全角記号や数字が混在している可能性がありますので、以下のコードを使用して全角記号を置き換えてください。正規表現でマッチング可能な半角
?$quanjiao = array('0' => '0', '1' => '1', '2' => '2', '3' => '3', ' 4' => '4'、'5' => '6'、'7' => '8'、' 9' => '9'、'A' => 'B'、'C' => 'D' E' => 'E'、'F' => 'G'、'H' => 'I' J'=>J、'K'=>L、'M'=>N、 O'=>O'、'P'=>'Q'、'R'=>'S'、' T'=>T'、'U'=>'V'、'W'=>'X'、' Y' => 'Y'、'Z' => 'a'、'b' => 'c'、' d' => 'd'、'e' => 'f' => 'g'、'h' => 'i' => 'i'、'j' => 'k'、'l' => 'm'、' n' => 'n'、'o' => 'p'、'q' => 'r'、' 's'、't'、'u'、'v'、'w'、' x' => 'x'、'y' => 'z'、'(' => '(', ')' => ') 〔' => '['、'】' => ']'、'【' => '[',']' => ']'、'〖' => '[', '〗' => ']'、'”' => '['、'”' => ']',''' => '['、''' => ']'、'{' => '{'、'}' => '}'、'《' => '0c9f95ce460a73fb787216529edc31e1 '>','%' => '%'、'+' => ' '、'—' => '-'、'-' => '-'、'~' => '-',':' => ':'、'。' => '.'、'、' => ',', ',' => '.'、'、' => '.'、';' => ',', '?' => 「?」、「!」 => '!'、'…' => '-'、'‖' => '|'、'”' => '"', ''' => '`', '''' => '`', '|' => '|', '〃' => '"',' ' => ' ');
$comment=strtr($comment, $quanjiao);
php の strtr 関数は、変換文字列内の特定の文字です。
は
strtr( string,from,to)
または者
strtr(string,array)
処理後,$comment变成了:”这是一个18神器三四的网站B快来添加①④呵呵qq12345678″;
3:评论里面可能还包含特殊文字(可以自己下面数组进行扩展新的特殊字符)
$special_num_char=array('①'=> '1','②'=>'2','③'=>'3','④'=>'4','⑤'=>'5','⑥'=> '6','⑦'=>'7','⑧'=>'8','⑨'=>'9','⑩'=>'10','⑴'=> '1'、'⑵'=>'2'、'⑶'=>'3'、'⑷'=>'4'、'⑸'=>'5'、'⑹'=> '6','⑺'=>'7','⑻'=>'8','⑼'=>'9','⑽'=>'10','一'=> '1','二'=>'2','三'=>'3','四'=>'4','五'=>'5','六'=> '6','七'=>'7','八'=>'8','九'=>'9','零'=>'0');
$comment =strtr($comment, $special_num_char);
処理後,$comment变成了:”これは18禁のネットサイトB快来追加14呵呵qq12345678”;
如果评论里面出在繁体の数字,例: '零','壹','贰','叁','肆','伍','陆','柒','捌','玖','拾'
4: 通常の数字と文字の数字が混在している可能性もあります。
例:これは一条广告qq 1二贰45六7899
转换後:
これは一条广告qq 1224567899
5:正则处理过滤广告
利用正则一致?preg_match_all('/d /',$comment,$match)
分析获取的match[0] 一致数组
foreach($match[0] as $val)//デジタル QQ アカウントと WeChat アカウントがあるかどうか
{
??? if(strlen($val)>=6)
??? {////広告の疑いが強い 6 桁を超える連続数値列があります
??????$is_ad=true;
???????break;
??? }
}
if(count($match[0])>=10)
{//断続的な数字が多く、広告の疑いあり
??? $is_ad=true;
}
これで、コンテンツが広告かどうかを判断でき、最も一般的な広告をフィルタリングできます
$flag_arr=array('?','!','¥','(',')',':','‘','’','“','”','《','》',',','…','。','、','nbsp','】','【','~'); $comment=preg_replace('/\s/','',preg_replace("/[[:punct:]]/",'',strip_tags(html_entity_decode(str_replace($flag_arr,'',$comment),ENT_QUOTES,'UTF-8')))); $quanjiao = array('0' => '0', '1' => '1', '2' => '2', '3' => '3', '4' => '4','5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9', 'A' => 'A', 'B' => 'B', 'C' => 'C', 'D' => 'D', 'E' => 'E','F' => 'F', 'G' => 'G', 'H' => 'H', 'I' => 'I', 'J' => 'J', 'K' => 'K', 'L' => 'L', 'M' => 'M', 'N' => 'N', 'O' => 'O','P' => 'P', 'Q' => 'Q', 'R' => 'R', 'S' => 'S', 'T' => 'T','U' => 'U', 'V' => 'V', 'W' => 'W', 'X' => 'X', 'Y' => 'Y','Z' => 'Z', 'a' => 'a', 'b' => 'b', 'c' => 'c', 'd' => 'd','e' => 'e', 'f' => 'f', 'g' => 'g', 'h' => 'h', 'i' => 'i','j' => 'j', 'k' => 'k', 'l' => 'l', 'm' => 'm', 'n' => 'n','o' => 'o', 'p' => 'p', 'q' => 'q', 'r' => 'r', 's' => 's', 't' => 't', 'u' => 'u', 'v' => 'v', 'w' => 'w', 'x' => 'x', 'y' => 'y', 'z' => 'z','(' => '(', ')' => ')', '〔' => '[', '〕' => ']', '【' => '[','】' => ']', '〖' => '[', '〗' => ']', '“' => '[', '”' => ']','‘' => '[', '\'' => ']', '{' => '{', '}' => '}', '《' => '<','》' => '>','%' => '%', '+' => '+', '—' => '-', '-' => '-', '~' => '-',':' => ':', '。' => '.', '、' => ',', ',' => '.', '、' => '.', ';' => ',', '?' => '?', '!' => '!', '…' => '-', '‖' => '|', '”' => '"', '\'' => '`', '‘' => '`', '|' => '|', '〃' => '"',' ' => ' '); $comment=strtr($comment, $quanjiao); $special_num_char=array('①'=>'1','②'=>'2','③'=>'3','④'=>'4','⑤'=>'5','⑥'=>'6','⑦'=>'7','⑧'=>'8','⑨'=>'9','⑩'=>'10','⑴'=>'1','⑵'=>'2','⑶'=>'3','⑷'=>'4','⑸'=>'5','⑹'=>'6','⑺'=>'7','⑻'=>'8','⑼'=>'9','⑽'=>'10','一'=>'1','二'=>'2','三'=>'3','四'=>'4','五'=>'5','六'=>'6','七'=>'7','八'=>'8','九'=>'9','零'=>'0'); $comment=strtr($comment, $special_num_char); preg_match_all('/\d+/',$comment,$match); $is_ad = false; foreach($match[0] as $val)//是否存在数字的qq号和微信号 { if(strlen($val)>=6) {//存在连续的长度超过6位的数字串,广告嫌疑很大 $is_ad=true; break; } } if(count($match[0])>=10) {//间断的数字很多,存在广告的嫌疑 $is_ad=true; }
?