ユーザーが投稿するコメントやその他のコンテンツ広告の種類には、一般に次の種類があります:
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'、'(' => '(', ')' => ') 〔' => '['、'】' => ']'、'【' => '[',']' => ']'、'〖' => '[', '〗' => ']'、'”' => '['、'”' => ']',''' => '['、''' => ']'、'{' => '{'、'}' => '}'、'《' => '<','》' => '>','%' => '%'、'+' => ' '、'—' => '-'、'-' => '-'、'~' => '-',':' => ':'、'。' => '.'、'、' => ',', ',' => '.'、'、' => '.'、';' => ',', '?' => 「?」、「!」 => '!'、'…' => '-'、'‖' => '|'、'”' => '"', ''' => '`', '''' => '`', '|' => '|', '〃' => '"',' ' => ' ');
$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;
}
これで、コンテンツが広告かどうかを判断でき、最も一般的な広告をフィルタリングできます
1 |
|
?