본문은 PHP 함수이고, 위 링크는 MySQL 함수이다.
<?
function utf8_strlen($str) { return mb_strlen($str, 'UTF-8'); }
function utf8_charAt($str, $num) { return mb_substr($str, $num, 1, 'UTF-8'); }
function utf8_ord($ch) {
$len = strlen($ch);
if($len <= 0) return false;
$h = ord($ch{0});
if ($h <= 0x7F) return $h;
if ($h < 0xC2) return false;
if ($h <= 0xDF && $len>1) return ($h & 0x1F) << 6 | (ord($ch{1}) & 0x3F);
if ($h <= 0xEF && $len>2) return ($h & 0x0F) << 12 | (ord($ch{1}) & 0x3F) << 6 | (ord($ch{2}) & 0x3F);
if ($h <= 0xF4 && $len>3) return ($h & 0x0F) << 18 | (ord($ch{1}) & 0x3F) << 12 | (ord($ch{2}) & 0x3F) << 6 | (ord($ch{3}) & 0x3F);
return false;
}
function export($str) {
$cho = array("ㄱ","ㄲ","ㄴ","ㄷ","ㄸ","ㄹ","ㅁ","ㅂ","ㅃ","ㅅ","ㅆ","ㅇ","ㅈ","ㅉ","ㅊ","ㅋ","ㅌ","ㅍ","ㅎ");
$result = "";
for ($i=0; $i<utf8_strlen($str); $i++) {
$code = utf8_ord(utf8_charAt($str, $i)) - 44032;
if ($code > -1 && $code < 11172) {
$cho_idx = $code / 588;
$result .= $cho[$cho_idx];
} else {
$result .= utf8_charAt($str, $i); // 이 부분을 제거하면 한글만 남긴다.
}
}
return $result;
}
echo export("[티스토리] TISTORY 블로그");
?>
결과는 [ㅌㅅㅌㄹ] TISTORY ㅂㄹㄱ 이다.
'코딩 > PHP' 카테고리의 다른 글
자주 쓰는 것들 (1) | 2023.01.19 |
---|---|
PHP 7.4 - MSSQL 연동 sqlsrv (0) | 2022.12.14 |
VScode Extension - PHP IntelliSense 설정 (1) | 2022.09.22 |
PHP - sqlsrv 함수 사용 시 주의 사항 (0) | 2022.08.09 |
URLDecoder: Illegal hex characters in escape (%) pattern (0) | 2016.08.29 |