"PHP 문자가 한글인지 확인 is hangul char()"의 두 판 사이의 차이

55번째 줄: 55번째 줄:
?>
?>
</source>
</source>
*실행결과: http://jmnote.com/php/is_hangul_char.php
;실행결과
<source lang='text'>
[A] is not hangul.
[,] is not hangul.
[★] is not hangul.
[가] is hangul.
[ㄱ] is hangul.
[ㅏ] is hangul.
[힣] is hangul.
[日] is not hangul.
[に] is not hangul.
</source>
* http://jmnote.com/php/is_hangul_char.php


==같이 보기==
==같이 보기==

2013년 3월 24일 (일) 09:52 판

is_hangul_char
PHP에서 문자가 한글인지 확인

1 핵심 소스

function is_hangul_char($ch) {
  $c = utf8_ord($ch);
  if( 0x1100<=$c && $c<=0x11FF ) return true;
  if( 0x3130<=$c && $c<=0x318F ) return true;
  if( 0xAC00<=$c && $c<=0xD7A3 ) return true;
  return false;
}

2 예제

<!DOCTYPE html>
<meta charset="utf-8" />
<?php
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 is_hangul_char($ch) {
  $c = utf8_ord($ch);
  if( 0x1100<=$c && $c<=0x11FF ) return true;
  if( 0x3130<=$c && $c<=0x318F ) return true;
  if( 0xAC00<=$c && $c<=0xD7A3 ) return true;
  return false;
}

function test($ch) {
	echo "<br>[$ch] is ";
	if(is_hangul_char($ch)) echo "hangul.";
	else echo "not hangul.";
}

echo test('A');
echo test(',');
echo test('★');
echo test('가');
echo test('ㄱ');
echo test('ㅏ');
echo test('힣');
echo test('日');
echo test('に');
?>
실행결과
[A] is not hangul.
[,] is not hangul.
[★] is not hangul.
[가] is hangul.
[ㄱ] is hangul.
[ㅏ] is hangul.
[힣] is hangul.
[日] is not hangul.
[に] is not hangul.

3 같이 보기

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}