제목
×
재생속도 설정
상태 메시지
랜드모아(pc)
|
2008-06-02 23:48:57
|
|
댓글:(0)
조회:2112
|
|
|
|
<?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 지원하지 않는 쪽에서,
단어필터링을 위해 만들었던 함수입니다. |
|
|
|
|
|
|
토막소스 |
페이지: 1 / 13
|
|
복수단어 검색은 공백(space)로 구분해 주세요.
|