この記事では、主に ucenter の単語フィルタリングの原理を紹介し、関連する SQL フィールド定義と ucenter の単語のフィルタリング関数を例の形で分析します。これには、文字列と配列の PHP の定期的な置換と関連する操作スキルが含まれます。ダウンを参照できます。お役に立てれば幸いです。
この記事では、ucenter の単語フィルタリング原理を分析します。参考までに皆さんと共有してください。詳細は次のとおりです:
フィルター単語リスト:
id | admin | find | replacement | findpattern |
1 | UCenter管理者 | 訪問 | 素晴らしい | /訪問/is |
2 | UCenterAdminist | 4655 | 45 | /4655/is |
3 | UCenterAdminist | fdsaf | dfsa | /fdsaf/is |
4 | UCenterAdminist | opportunity | ( | /opportunity/is |
) キャッシュデータの構築:
//private function _get_badwords() { $data = $this->db->fetch_all("SELECT * FROM ".UC_DBTABLEPRE."badwords"); $return = array(); if(is_array($data)) { foreach($data as $k => $v) { $return['findpattern'][$k] = $v['findpattern']; $return['replace'][$k] = $v['replacement']; } } return $return; }
Callメソッド:各パラメータの
$_CACHE['badwords'] = $this->base->cache('badwords'); if($_CACHE['badwords']['findpattern']) { $subject = @preg_replace($_CACHE['badwords']['findpattern'], $_CACHE['badwords']['replace'], $subject); $message = @preg_replace($_CACHE['badwords']['findpattern'], $_CACHE['badwords']['replace'], $message); }
preg_replace() (例外を除く)制限 ) は配列にすることができます。 pattern と replace の両方が配列の場合、それらのキーは配列内に出現する順序で処理されます。これは、インデックスの番号順と必ずしも同じではありません。どのパターンをどの置換で置き換えるかを識別するためにインデックスを使用する場合、preg_replace() を呼び出す前に配列を ksort() でソートする必要があります。
関連する推奨事項:
以上がucenter の単語フィルタリング原理の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。