PHP 한국어 조사 처리

Jmnote (토론 | 기여)님의 2018년 6월 17일 (일) 19:49 판 (→‎참고)

1 개요

PHP 조사 처리
PHP 한국어 조사 처리
PHP 함수 proc_josa()
function proc_josa($ex) {
	$pps = ["이(가)","은(는)","을(를)"];
	foreach( $pps as $pp ) {
		$pos = mb_strpos($ex, $pp);
		if( $pos === false || $pos < 1 ) continue;
		$ch = mb_substr($ex, $pos-1, 1);
		if(!preg_match('/[가-힣]/',$ch)) continue;
		$code = (ord($ch{0}) & 0x0F) << 12 | (ord($ch{1}) & 0x3F) << 6 | (ord($ch{2}) & 0x3F);
		if( ( $code - 44032 ) % 28 == 0 ) $pp2 = mb_substr($pp ,2, 1);
		else $pp2 = mb_substr($pp, 0, 1);
		$ex = mb_substr($ex,0,$pos) . $pp2 . mb_substr($ex,$pos+4);
	}
	return $ex;
}
var_dump( proc_josa("말이(가) 노래한다") );
var_dump( proc_josa("매이(가) 노래한다") );
var_dump( proc_josa("바람이(가) 노래한다") );
var_dump( proc_josa("황소이(가) 노래한다") );
# string(19) "말이 노래한다"
# string(19) "매가 노래한다"
# string(22) "바람이 노래한다"
# string(22) "황소가 노래한다"
var_dump( proc_josa("욕심많은 말을(를) 쓰러뜨린 자") );
var_dump( proc_josa("욕심많은 매을(를) 쓰러뜨린 자") );
var_dump( proc_josa("욕심많은 바람을(를) 쓰러뜨린 자") );
var_dump( proc_josa("욕심많은 황소을(를) 쓰러뜨린 자") );
# string(36) "욕심많은 말을 쓰러뜨린 자"
# string(36) "욕심많은 매를 쓰러뜨린 자"
# string(39) "욕심많은 바람을 쓰러뜨린 자"
# string(39) "욕심많은 황소를 쓰러뜨린 자"
var_dump( proc_josa("나은(는) 너을(를) 조심한다") );
var_dump( proc_josa("갑이(가) 을을(를) 사랑한다") );
# string(26) "나는 너를 조심한다"
# string(26) "갑이 을을 사랑한다"

2 같이 보기

3 참고

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