首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 利用中文字符比率精準過濾垃圾評論

     編輯:PHP 綜合知識

前言

近期網站常遭遇一類狡猾的垃圾評論:大段英文夾雜一兩個生僻漢字,因包含中文字符且無敏感詞,輕易繞過常規過濾機制。針對此類「偽中文」評論,可透過計算中文字符佔總字符的比率來識別攔截。本文將詳細介紹基於 PHP 實現的檢測邏輯與代碼實踐。

核心原理

PHP 中 strlen() 與 mb_strlen() 對中文長度的計算差異是關鍵:

  • strlen():按字節計算,UTF-8 編碼下單個漢字佔 3 字節。
  • mb_strlen():按字符計算,單個漢字長度為 1。

同一字符串經兩函數處理,長度之差即為中文字符字節數的 2 倍(因 3-1=2)。除以 2 得到實際漢字數,再除以總字符數(mb_strlen 結果),即得中文佔比。

實現代碼

<?php
$len_all = strlen($comment['text']);
$len_st  = mb_strlen($comment['text'], 'UTF-8');

// 中文佔比低於 50% 判定為垃圾評論
if (($len_all - $len_st) / (2 * $len_st) < 0.5) {
    $error = "中文字符少於百分之五十";
}
?>

注意事項

若評論包含代碼片段,會導致中文比率偏低產生誤判。建議先過濾代碼標籤(如 <code>、<pre>)後再進行比率計算,提升準確度。

總結

此方法簡單高效,能有效攔截「掛羊頭賣狗肉」的垃圾評論,但需輔以代碼過濾等預處理以降低誤判率。實際部署時可根據業務場景調整閾值(如 40%~60%)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved