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

 
(사용자 3명의 중간 판 14개는 보이지 않습니다)
1번째 줄: 1번째 줄:
==개요==
{{DISPLAYTITLE:PHP 문자가 한글인지 확인 is_hangul_char()}}
;함수 is_hangul_char()
;함수 is_hangul_char()
;PHP에서 문자가 한글인지 확인
;PHP에서 문자가 한글인지 확인
;PHP 한글인지 확인
;PHP 한글인지 확인


==핵심 코드==
<syntaxhighlight lang='php' run>
<source lang='php'>
function is_hangul_char($c) {
function is_hangul_char($ch) {
   $o = utf8_ord($c);
   $c = utf8_ord($ch);
   if( 0x1100<=$o && $o<=0x11FF ) return true;
   if( 0x1100<=$c && $c<=0x11FF ) return true;
   if( 0x3130<=$o && $o<=0x318F ) return true;
   if( 0x3130<=$c && $c<=0x318F ) return true;
   if( 0xAC00<=$o && $o<=0xD7A3 ) return true;
   if( 0xAC00<=$c && $c<=0xD7A3 ) return true;
   return false;
   return false;
}
}
</source>


==예제==
function utf8_ord($c) {
<source lang='php'>
   $len = strlen($c);
<?php
function utf8_ord($ch) {
   $len = strlen($ch);
   if($len <= 0) return false;
   if($len <= 0) return false;
   $h = ord($ch{0});
   $h = ord($c[0]);
   if ($h <= 0x7F) return $h;
   if ($h <= 0x7F) return $h;
   if ($h < 0xC2) return false;
   if ($h < 0xC2) return false;
   if ($h<=0xDF && $len>1) return ($h & 0x1F) << 6 | (ord($ch{1}) & 0x3F);
   if ($h<=0xDF && $len>1) return ($h & 0x1F) << 6 | (ord($c[1]) & 0x3F);
   if ($h<=0xEF && $len>2) return ($h & 0x0F) << 12 | (ord($ch{1}) & 0x3F) << 6 | (ord($ch{2}) & 0x3F);        
   if ($h<=0xEF && $len>2) return ($h & 0x0F) << 12 | (ord($c[1]) & 0x3F) << 6 | (ord($c[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);
   if ($h<=0xF4 && $len>3) return ($h & 0x0F) << 18 | (ord($c[1]) & 0x3F) << 12 | (ord($c[2]) & 0x3F) << 6 | (ord($c[3]) & 0x3F);
   return false;
   return false;
}
}


function is_hangul_char($ch) {
var_dump(is_hangul_char('가'));  # bool(true)
  $c = utf8_ord($ch);
var_dump(is_hangul_char('ㄱ')); # bool(true)
  if( 0x1100<=$c && $c<=0x11FF ) return true;
var_dump(is_hangul_char('ㅏ')); # bool(true)
  if( 0x3130<=$c && $c<=0x318F ) return true;
var_dump(is_hangul_char('힣')); # bool(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.";
}


test('A');
var_dump(is_hangul_char('A'));   # bool(false)
test(',');
var_dump(is_hangul_char(','));   # bool(false)
test('★');
var_dump(is_hangul_char('★')); # bool(false)
test('가');
var_dump(is_hangul_char('')); # bool(false)
test('');
var_dump(is_hangul_char('に')); # bool(false)
test('ㅏ');
</syntaxhighlight>
test('힣');
test('日');
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.
</source>
* http://example.zetawiki.com/php/is_hangul_char.php


==같이 보기==
==같이 보기==
68번째 줄: 42번째 줄:
* [[함수 has_hangul()]]
* [[함수 has_hangul()]]
* [[UTF-8 한글]]
* [[UTF-8 한글]]
* [[utf8_ord]]
* [[PHP utf8_ord()]]


==참고 자료==
==참고==
*http://eqcode.com/wiki/Is_hangul_char
*http://eqcode.com/wiki/Is_hangul_char



2021년 4월 15일 (목) 23:29 기준 최신판

1 개요[ | ]

함수 is_hangul_char()
PHP에서 문자가 한글인지 확인
PHP 한글인지 확인
function is_hangul_char($c) {
  $o = utf8_ord($c);
  if( 0x1100<=$o && $o<=0x11FF ) return true;
  if( 0x3130<=$o && $o<=0x318F ) return true;
  if( 0xAC00<=$o && $o<=0xD7A3 ) return true;
  return false;
}

function utf8_ord($c) {
  $len = strlen($c);
  if($len <= 0) return false;
  $h = ord($c[0]);
  if ($h <= 0x7F) return $h;
  if ($h < 0xC2) return false;
  if ($h<=0xDF && $len>1) return ($h & 0x1F) << 6 | (ord($c[1]) & 0x3F);
  if ($h<=0xEF && $len>2) return ($h & 0x0F) << 12 | (ord($c[1]) & 0x3F) << 6 | (ord($c[2]) & 0x3F);
  if ($h<=0xF4 && $len>3) return ($h & 0x0F) << 18 | (ord($c[1]) & 0x3F) << 12 | (ord($c[2]) & 0x3F) << 6 | (ord($c[3]) & 0x3F);
  return false;
}

var_dump(is_hangul_char('가'));  # bool(true)
var_dump(is_hangul_char('ㄱ'));  # bool(true)
var_dump(is_hangul_char('ㅏ'));  # bool(true)
var_dump(is_hangul_char('힣'));  # bool(true)

var_dump(is_hangul_char('A'));   # bool(false)
var_dump(is_hangul_char(','));   # bool(false)
var_dump(is_hangul_char('★'));  # bool(false)
var_dump(is_hangul_char('日'));  # bool(false)
var_dump(is_hangul_char('に'));  # bool(false)

2 같이 보기[ | ]

3 참고[ | ]

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