2010. 4. 21. 18:14
한글 str_replace, 한글 2바이트 문제로 인한 변경 PHP2010. 4. 21. 18:14
어디서 퍼왔는지는 모른다.
//한글문제로 인한 전용변경함수
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를 지움.
}
EUC-KR 검색에서 불필요한 문자들 제거하다 보니 한글2바이트 문제가 생겼다.
한글에서 str_replace가 안될 때 쓰면 된다. 뭐 다른것으로 써도 상관없다만...
function remove_sp_chars($del_string){
$tmp_sa_cmt = trim($del_string);
// $tmp_sa_cmt = str_replace(" ", "", $tmp_sa_cmt);
$tmp_sa_cmt = str_replace("+", "", $tmp_sa_cmt); $tmp_sa_cmt = str_replace("-", "", $tmp_sa_cmt); //20090914 검색으로 뻘짓하는 인간때문에 추가
$tmp_sa_cmt = str_replace(".", "", $tmp_sa_cmt); $tmp_sa_cmt = str_replace(",", "", $tmp_sa_cmt);
$tmp_sa_cmt = str_replace("_", "", $tmp_sa_cmt); $tmp_sa_cmt = str_replace("-", "", $tmp_sa_cmt);
$tmp_sa_cmt = str_replace("ㅜ", "", $tmp_sa_cmt); $tmp_sa_cmt = str_replace("ㅠ", "", $tmp_sa_cmt);
$tmp_sa_cmt = str_replace(":", "", $tmp_sa_cmt); $tmp_sa_cmt = str_replace(";", "", $tmp_sa_cmt);
$tmp_sa_cmt = str_replace("~", "", $tmp_sa_cmt);
$tmp_sa_cmt = str_replace("/", "", $tmp_sa_cmt); $tmp_sa_cmt = str_replace("\\", "", $tmp_sa_cmt);
$tmp_sa_cmt = str_replace("(", "", $tmp_sa_cmt); $tmp_sa_cmt = str_replace(")", "", $tmp_sa_cmt);
$tmp_sa_cmt = str_replace("[", "", $tmp_sa_cmt); $tmp_sa_cmt = str_replace("]", "", $tmp_sa_cmt);
$tmp_sa_cmt = str_replace("\"", "", $tmp_sa_cmt); $tmp_sa_cmt = str_replace("'", "", $tmp_sa_cmt);
$tmp_sa_cmt = str_replace("\r\n", "", $tmp_sa_cmt); $tmp_sa_cmt = str_replace("\n", "", $tmp_sa_cmt);
$tmp_sa_cmt = str_replace("@", "", $tmp_sa_cmt); $tmp_sa_cmt = str_replace("&", "", $tmp_sa_cmt);
$tmp_sa_cmt = str_replace("^", "", $tmp_sa_cmt); $tmp_sa_cmt = str_replace("#", "", $tmp_sa_cmt); //^^문자를 제거.
//불필요한 자음과 모음을 전부 제거한다.
$tmp_sa_cmt=Han_replace('ㅂ', '', $tmp_sa_cmt); $tmp_sa_cmt=Han_replace('ㅈ', '', $tmp_sa_cmt); $tmp_sa_cmt=Han_replace('ㄷ', '', $tmp_sa_cmt); $tmp_sa_cmt=Han_replace('ㄱ', '', $tmp_sa_cmt);
$tmp_sa_cmt=Han_replace('ㅅ', '', $tmp_sa_cmt); $tmp_sa_cmt=Han_replace('ㅛ', '', $tmp_sa_cmt); $tmp_sa_cmt=Han_replace('ㅕ', '', $tmp_sa_cmt); $tmp_sa_cmt=Han_replace('ㅑ', '', $tmp_sa_cmt);
$tmp_sa_cmt=Han_replace('ㅐ', '', $tmp_sa_cmt); $tmp_sa_cmt=Han_replace('ㅔ', '', $tmp_sa_cmt); $tmp_sa_cmt=Han_replace('ㅁ', '', $tmp_sa_cmt); $tmp_sa_cmt=Han_replace('ㄴ', '', $tmp_sa_cmt);
$tmp_sa_cmt=Han_replace('ㅇ', '', $tmp_sa_cmt); $tmp_sa_cmt=Han_replace('ㄹ', '', $tmp_sa_cmt); $tmp_sa_cmt=Han_replace('ㅎ', '', $tmp_sa_cmt); $tmp_sa_cmt=Han_replace('ㅗ', '', $tmp_sa_cmt);
$tmp_sa_cmt=Han_replace('ㅓ', '', $tmp_sa_cmt); $tmp_sa_cmt=Han_replace('ㅏ', '', $tmp_sa_cmt); $tmp_sa_cmt=Han_replace('ㅣ', '', $tmp_sa_cmt); $tmp_sa_cmt=Han_replace('ㅋ', '', $tmp_sa_cmt);
$tmp_sa_cmt=Han_replace('ㅌ', '', $tmp_sa_cmt); $tmp_sa_cmt=Han_replace('ㅊ', '', $tmp_sa_cmt); $tmp_sa_cmt=Han_replace('ㅍ', '', $tmp_sa_cmt); $tmp_sa_cmt=Han_replace('ㅠ', '', $tmp_sa_cmt);
$tmp_sa_cmt=Han_replace('ㅜ', '', $tmp_sa_cmt); $tmp_sa_cmt=Han_replace('ㅡ', '', $tmp_sa_cmt);
return $tmp_sa_cmt;
}