あなたのウェブサイトにコメントがある場合、アルバイト、QQアカウント、タオバオのアルバイト、ウェブサイトの情報など、あなたのウェブサイトに頻繁に広告が挿入されていることがわかります。これらのコンテンツをフィルタリングします。
ユーザーが投稿するコメントやその他のコンテンツ広告の種類には一般的に次のようなものがあります:
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:" "Purify"コンテンツを編集して句読点を削除します
$flag_arr=array('?','!','¥','(',')',':',''',''','"', '" ','《','》',',','...','.',',','nbsp','】','【','~'); /','',preg_replace("/[[:punct:]]/",'',strip_tags(html_entity_decode(str_replace($flag_arr,'',$comment),ENT_QUOTES,'UTF-8 ')))) ;
処理後、$comment は次のようになります: "This is a (1)8 artifact 34 website. B Come and join ①④hehe qqq12345678"
2: 全角記号や数字が含まれる場合があるため、次のコードを使用します。全角記号を正規表現で照合できる半角記号に変換します
$quanjiao = array('0' => '0', '1' => '1', '2' => ; '2'、'3' => '4'、'5' => '6'、'7' => '7'、'8' => '8'、'9' => 'A'、'B' => ' C'、'D' => 'E'、'F' => 'G'、'H' => H'、'I' => 'J'、'L' => 'L'、'M' => M'、'N' => 'O'、'P' => 'Q'、'R' => R'、'S' => 'T'、'U' => 'V'、'W' => W'、'X' => 'Y'、'Z' => 'a'、'b' => ; b'、'c' => 'c'、'd' => 'd'、'f' => 'g' => ; 'g'、'h' => 'i'、'j' => 'k' => ; 'l'、'm'、'n' => 'o'、'q' => ; 'q'、's' => 's'、'u' => 'v' = > 'v', 'w' => 'x', 'y' => 'z',' => '(', ')' => '[', ']' => '[',']' => ']', '〖' => '[', '〗' =>', '"' => '[', '"' => => '['、''' => '{'、'}' => ''、'%' =>、'+'、'-'、'-'、' ~' => '-',':' => ':', '。 ' => ',' => '.', ';' => ' => '?'、'! ' => '!'、'…' => '-'、'‖' => '"'、''' => ' => '`', '|' => '|', '〃' => ' ');
$comment, $quanjiao ;
php の strtr 関数は、文字列内の特定の文字を変換するために使用されます
strtr(string,from,to)
または
strtr(string,array)
処理後、$comment は次のようになります。 18 アーティファクト 34 のウェブサイト。B 来て参加してください①④heheqq12345678'';
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'=>'6','7'=>'7','8'=>8','9'=>9','zero'= >'0');
$comment=strtr($comment, $special_num_char);
処理後、$comment は次のようになります: "これは 18 成果物 Web サイトです B 参加してください 14heheqq12345678";
コメントすると繁体字中国語の数字が表示されますその中には、「ゼロ」、「一」、「二」、「三」、「四」、「五」、「Lu」、「Qi」、「8」、「9」、「Shi」などがあります。 、上記の $special_num_char を追加して展開するだけです。
4: コメント内に通常の数字と漢字の数字が混在している場合もありますが、ポイント 3 の方法を使用して通常の数字に変換してください。
例: これは広告です qq 1二二 45六7899
変換後:
これは広告です qq 1224567899
5: 広告をフィルタリングするための通常の処理
通常の一致を使用します preg_match_all('/d+/',$comment , $match)
取得した match[0] の配列を解析
foreach($match[0] as $val)//デジタル QQ 番号と WeChat ID があるかどうか if(strlen($val)> = 6)
{// 6 桁を超える連続した数字が多数あり、広告の疑いが非常に大きい
$ is_ad = true )
{// 断続的な数字が多く、広告の疑いがあります
$is_ad=true;
}
OK。そのため、コンテンツが広告であるかどうかを判断でき、最も一般的な広告をフィルタリングできます
$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; }