테스트 사이트 - 개발 중인 베타 버전입니다

php 정규식 한글이 있는지 체크하는부분 여쭤봅니다.. 채택완료

김준수사랑 2년 전 조회 2,268

$str = "zzzzzd’zdz";

if (preg_match("/[\xE0-\xFF][\x80-\xFF][\x80-\xFF]/", $str))
    echo "한글포함";
else
    echo "한글없음";
 

이걸로 체크를 하고 있는데요

분명한글이 없는데 저기중간에 특문이 하나 들어가있는걸로 인해 한글이 있다고 표기됩니다..

인터넷에서 찾은 식인데 잘못된건가요??

 

 

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

채택된 답변
+20 포인트

해당 코드는 한글이 아닌 UTF-8 문자열에서 3바이트 문자열 패턴을 찾는 정규식입니다.

만약 한글을 포함하는지 여부를 확인하려면 다음과 같이 수정하면 됩니다.

 

</p>

<p> </p>

<p>$str = "한글 포함여부' 확인";</p>

<p>if (preg_match("/[\x{AC00}-\x{D7AF}]+/u", $str))</p>

<p>     echo "한글 포함";</p>

<p>else</p>

<p>     echo "한글 없음";</p>

<p> </p>

<p>결과 : 한글포함</p>

<p> </p>

<p>

 

</p>

<p> </p>

<p>$str = "zzzzzd’zdz";</p>

<p>if (preg_match("/[\x{AC00}-\x{D7AF}]+/u", $str))</p>

<p>     echo "한글 포함";</p>

<p>else</p>

<p>     echo "한글 없음";</p>

<p> </p>

<p>결과 : 한글없음</p>

<p> </p>

<p>

 

위 코드에서는 preg_match() 함수를 사용하여 입력 문자열 $str 에서 한글이 포함되어 있는지 여부를 판별합니다. u 모드를 사용하여 유니코드 문자열을 처리하도록 지정하고, 정규식 패턴으로는 한글 유니코드 범위를 나타내는 \x{AC00}-\x{D7AF} 를 사용합니다.

해당 정규식 패턴은 유니코드 블록인 'Hangul Syllables'에 해당하는 한글 문자들을 포함합니다. 따라서 한글이 포함되어 있는지 여부를 판별할 수 있습니다.

참고 : 챗GPT

 

 

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

php 5.3 이상이라면 (당연하겠지만)

 

if (preg_match("/[가-힣]+/", $str)){

    echo "한글 포함";

} else {

    echo "한글 없음";

}

 

완성형 기준으로 이렇게 가-힣 도 쓰입니다^^;

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

chatGPT에게 짜 달라고 해봤습니다.

function check_korean($string) {</p>

<p>  return preg_match('/[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]/u', $string);</p>

<p>}

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인