웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
한글 필터링 정확히 하기
2002.02.09 07:02
http://board.mini-i.com이 문제는 제로보드도 역시 있는 문제 입니다.;;
eregi() 함수등으로 간단하게 처리할때
어이없는 한글을 같다고 인식할때가 있어요.
제로님도 보셔서;; 제로보드를 한층 더 빛내주시길 :)
HEX code 변환에 대한 속도걱정은 하지 않으셔도 되요;
함수 자체는 느리지만 편법;을 사용해서
1.6 메가 문장의 필터링에서 0.0005 초가 나왔답니다;;
이하 제가 PHPSCHOOL 에 남긴 글입니다;
---------------------------------------------------------------
안녕하세요 미뉘 입니다.
PHP 에서는 eregi,explode 등, 모든 검색 부분에서
한글을 검색할때 오류를 일으키는 것이 종종 있습니다.
이를테면 '려운' 과 '좆' 을 같게 인식한다거나 하는 것이죠.
어떤분의 말씀으로는 서버설정으로 이것을 해결할 수 있다고 하셨는데
필터링 사정-_-;상 서버설정 하나하나 다 바꿔달라고 할 수 없는거죠
무엇보다 프로그램 자체내에서 해결하는게 중요합니다.
이걸로 고심하고 있다가 저 아래에 어떤분이 HEX code 로 변환시켜서
판별하는 방법을 올려주셨습니다. 근데 그걸로 그냥 확인하면 문장이
조금만 길어지면 시간초과 됩니다; (한문자씩 바꿔주는 형식)
3시간-_-; 정도 막막해 있다가 드디어 해결했답니다 :)
strchr,substr 함수와 아랫분이 만드신 hex 변환 함수를 가지고 정확한 욕필터링
하는것을 보여드리겠습니다 -ㅁ-;
참고로 미니보드;; [02/09] 버젼부터 적용될 것이며
당장 확인 하실분은 http://board.mini-i.com 홈피내의
게시판에서 확인해보세요
기초적인것;; ( 지-_-랄 이라던지 ) 걸러내는 코드 다 빼고
핵심만 적었습니다.
------------------------------------------------------------
// $fil 에는 필터 내용들이 배열로 들어가 있습니다
// $fil = array('욕','욕-_-;;;'); 뭐 이렇게요;
// $confirm_filter 에는 필터링 대상 글이 들어가 있겠죠?
// 문자열을 hexcode로 바꿔주는 함수
function asc_hex($char) {
$j = 0; $word_length=strlen($char);
for($i = 0;$i<$word_length;$i++) {
if($j == 0) { if(ord(substr($char,$i,1)) > 0xa1 && ord(substr($char,$i,1)) <= 0xfe) {
$j = 1; $t_char = $t_char.bin2hex(substr($char,$i,1)); }
else { $t_char = $t_char."00".bin2hex(substr($char,$i,1))." "; }
} else { $t_char = $t_char.bin2hex(substr($char,$i,1))." "; $j = 0; } }
return $t_char; }
for($e=0;$e<count($fil);$e++)
{
if(strchr($confirm_filter,$fil[$e]))
{
// 필터링에 걸렸을때 잘못된 체크는 아닌지 체크함
$check_pos=strpos($confirm_filter,$fil[$e]);
if($check_pos<5) $check_pos=5;
$check_filter2=substr($confirm_filter,$check_pos-5,strlen($fil[$e])+5);
if(eregi(asc_hex($fil[$e]),asc_hex($check_filter2))) die(" $fil[$e] 단어는 등록할 수 없습니다. (필터링기능) ");
}
}
eregi() 함수등으로 간단하게 처리할때
어이없는 한글을 같다고 인식할때가 있어요.
제로님도 보셔서;; 제로보드를 한층 더 빛내주시길 :)
HEX code 변환에 대한 속도걱정은 하지 않으셔도 되요;
함수 자체는 느리지만 편법;을 사용해서
1.6 메가 문장의 필터링에서 0.0005 초가 나왔답니다;;
이하 제가 PHPSCHOOL 에 남긴 글입니다;
---------------------------------------------------------------
안녕하세요 미뉘 입니다.
PHP 에서는 eregi,explode 등, 모든 검색 부분에서
한글을 검색할때 오류를 일으키는 것이 종종 있습니다.
이를테면 '려운' 과 '좆' 을 같게 인식한다거나 하는 것이죠.
어떤분의 말씀으로는 서버설정으로 이것을 해결할 수 있다고 하셨는데
필터링 사정-_-;상 서버설정 하나하나 다 바꿔달라고 할 수 없는거죠
무엇보다 프로그램 자체내에서 해결하는게 중요합니다.
이걸로 고심하고 있다가 저 아래에 어떤분이 HEX code 로 변환시켜서
판별하는 방법을 올려주셨습니다. 근데 그걸로 그냥 확인하면 문장이
조금만 길어지면 시간초과 됩니다; (한문자씩 바꿔주는 형식)
3시간-_-; 정도 막막해 있다가 드디어 해결했답니다 :)
strchr,substr 함수와 아랫분이 만드신 hex 변환 함수를 가지고 정확한 욕필터링
하는것을 보여드리겠습니다 -ㅁ-;
참고로 미니보드;; [02/09] 버젼부터 적용될 것이며
당장 확인 하실분은 http://board.mini-i.com 홈피내의
게시판에서 확인해보세요
기초적인것;; ( 지-_-랄 이라던지 ) 걸러내는 코드 다 빼고
핵심만 적었습니다.
------------------------------------------------------------
// $fil 에는 필터 내용들이 배열로 들어가 있습니다
// $fil = array('욕','욕-_-;;;'); 뭐 이렇게요;
// $confirm_filter 에는 필터링 대상 글이 들어가 있겠죠?
// 문자열을 hexcode로 바꿔주는 함수
function asc_hex($char) {
$j = 0; $word_length=strlen($char);
for($i = 0;$i<$word_length;$i++) {
if($j == 0) { if(ord(substr($char,$i,1)) > 0xa1 && ord(substr($char,$i,1)) <= 0xfe) {
$j = 1; $t_char = $t_char.bin2hex(substr($char,$i,1)); }
else { $t_char = $t_char."00".bin2hex(substr($char,$i,1))." "; }
} else { $t_char = $t_char.bin2hex(substr($char,$i,1))." "; $j = 0; } }
return $t_char; }
for($e=0;$e<count($fil);$e++)
{
if(strchr($confirm_filter,$fil[$e]))
{
// 필터링에 걸렸을때 잘못된 체크는 아닌지 체크함
$check_pos=strpos($confirm_filter,$fil[$e]);
if($check_pos<5) $check_pos=5;
$check_filter2=substr($confirm_filter,$check_pos-5,strlen($fil[$e])+5);
if(eregi(asc_hex($fil[$e]),asc_hex($check_filter2))) die(" $fil[$e] 단어는 등록할 수 없습니다. (필터링기능) ");
}
}
제목 | 글쓴이 | 날짜 |
---|---|---|
[iframe:아이프레임] 내용에 맞게 사이즈 조절하기 한번입력으로 끝.[다른방법:중복아닌듯] [45] | beMax | 2004.04.23 |
(For 초보)원클릭으로 여러프레임 컨트롤하기 [2] | 쉬드 | 2004.04.19 |
자기가 살아온 시간 구하기.. 데스크탑에 나타내기 [4] | kein23 | 2004.04.14 |
브라우저 버젼별 다른 페이지 보여주기 [2] | Kuldahar | 2004.04.13 |
바보같은 MS의 parseInt 버그. [4] | 김관석 | 2004.04.09 |
XP계열의 방문자 컴에서 ClearType 효과 사용여부 확인 [4] | YeUPy | 2004.04.04 |
팝업공지창 2개이상 띄우기(시간제한 가능) [8] | lemin | 2004.03.23 |
허접한 풀다운 메뉴 소스입니다. (유용한 팁 일지는 모르겠네요.)
[9]
![]() | tintintm | 2004.03.23 |
버튼 만들기 [1] | 旻天 | 2004.03.23 |
MS agent online object - Default Character 인 Merlin Action 추가 [2] | 꽃ちゃん | 2004.03.19 |
움직이는 타이틀바 [4] | 김동현 | 2004.03.18 |
웹브라우저 상태바가 밑으로 내려오는 소스 [5] | 프리서버 | 2004.03.16 |
브라우져(윈도우) 창의 크기(사이즈)를 조절하는 소스입니다 [5] | 나야 | 2004.03.15 |
프레임사이트에서 자식 프레임(URL)로 직접 치고 들어 올경우 다시 프레임 부모로 돌려보내는 소스 | 나야 | 2004.03.15 |
전체 include menu 만들기(롤오버 이미지 사용) [4] | Neoyoung | 2004.03.14 |
[초간단 자바스크립트!] 서브메뉴 만들기...~ [11] | ∑Ztxy | 2004.03.10 |
뉴스티커
[16]
![]() | zero | 2004.03.10 |
보안문서 만들기 [5] | 민우주 | 2004.03.07 |
팝업 창 띄우고 어미창 사라지게 하는 소스 [5] | piasol | 2004.03.06 |
방문자 OS보여주기 [5] | 구조반 | 2004.03.05 |