<?php
$str = '오예동물 잘되는지..';
echo str_replace( '예' ,'yes', $str );
/*
출력 -> "오yes탙es?잘되는지.."
기대한 결과는 '오yes동물 잘되는지..' 이지만,
연속된 한글코드 '오예동물 잘되는지..' 단어속에는 '예' 가 두번 찾아지게 된다.
이것은 2바이트 체계의 한글을 무시해서 생기는 일이며,
'동'의 뒷자리 1바이트와 '물'의 앞자리 1바이트가 합쳐져 '예'라는 단어와
같은코드로 해석되어 생기는 일이다.
*/
// -------------------------------------------------------------------
function Han_replace( $search, $to, $str ) {
// 한글만 단어별로 늘리서,, 앞뒤의 코드가 섞이는것을 방지함.
$ESC = "\x1b"; // 키보드로 입력할 수 없는 [Esc]코드,
$pattern1 = "/([\x80-\xff].)/";
$pattern2 = "/([\x80-\xff].)$ESC/";
$str = preg_replace( $pattern1, "\\1$ESC", $str ); // 모든 한글단어 뒤에 $ESC를 추가함.
$search = preg_replace( $pattern1, "\\1$ESC", $search ); // 찾을 문자도 같은 패턴으로 바꿈,
$str = str_replace( $search, $to, $str ); // 일단 때려 바꾸고.
return preg_replace( $pattern2, "\\1", $str ); // 한글 뒤에 추가했던 $ESC를 지움.
}
$str = '오예동물 잘되는지..';
echo Han_replace( '예' ,'yes', $str );
// 출력 -> 오yes동물 잘되는지..
?>
utf-8 지원하지 않는 쪽에서,
단어필터링을 위해 만들었던 함수입니다.
방법이 좀 무식한것 같기도 하구...
그냥 이렇게도 하는구나.. 하구 양해를 ㅎㅎ;
출처:http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=61182&page=1
'인터넷정보' 카테고리의 다른 글
[함수] 텍스트 내부에 포함된 탭 문자 제거하기 (0) | 2008.07.09 |
---|---|
‘.com’ ‘.net’ - 컴,넷 등 기존 인터넷 주소 완전히 바뀐다 (0) | 2008.06.27 |
‘.com’ ‘.net’ - 컴,넷 등 기존 인터넷 주소 완전히 바뀐다 (0) | 2008.06.27 |
IE Tester (IE 5.5, IE 6, IE 7, IE 8 Beta1) (0) | 2008.06.06 |
IE Tester (IE 5.5, IE 6, IE 7, IE 8 Beta1) (0) | 2008.06.06 |
str_replace() 한글치환시 한글깨짐 현상 보강...?? (0) | 2008.05.30 |
자바스크립트 - 드래그로 선택하는 박스 (0) | 2008.05.30 |
자바스크립트 - 드래그로 선택하는 박스 (0) | 2008.05.30 |
네이버 실시간 급상승 검색어 산출방법 (0) | 2008.05.23 |
네이버 실시간 급상승 검색어 산출방법 (0) | 2008.05.23 |