이 글은 ucenter의 단어 필터링 원리를 분석한 것입니다. 다음과 같이 참조용으로 모든 사람과 공유하십시오.
필터 단어 목록
캐시 데이터 구축:
//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; }
호출 방법:
$_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()의 각 매개변수(제한 제외)는 배열이 될 수 있습니다. 패턴과 교체가 모두 배열인 경우 해당 키는 배열에 나타나는 순서대로 처리됩니다. 이는 인덱스의 숫자 순서와 반드시 동일할 필요는 없습니다. 어떤 패턴이 어떤 교체로 대체되는지 식별하기 위해 인덱스가 사용되는 경우 preg_replace()를 호출하기 전에 배열을 ksort()로 정렬해야 합니다.
이 글이 PHP 프로그래밍에 종사하는 모든 분들께 도움이 되기를 바랍니다.
ucenter의 단어 필터링 원리 분석과 관련된 더 많은 기사를 보려면 PHP 중국어 웹 사이트를 주목하세요!