php 정규식 한글이 있는지 체크하는부분 여쭤봅니다..
본문
$str = "zzzzzd’zdz";
if (preg_match("/[\xE0-\xFF][\x80-\xFF][\x80-\xFF]/", $str))
echo "한글포함";
else
echo "한글없음";
이걸로 체크를 하고 있는데요
분명한글이 없는데 저기중간에 특문이 하나 들어가있는걸로 인해 한글이 있다고 표기됩니다..
인터넷에서 찾은 식인데 잘못된건가요??
답변 3
해당 코드는 한글이 아닌 UTF-8 문자열에서 3바이트 문자열 패턴을 찾는 정규식입니다.
만약 한글을 포함하는지 여부를 확인하려면 다음과 같이 수정하면 됩니다.
$str = "한글 포함여부' 확인";
if (preg_match("/[\x{AC00}-\x{D7AF}]+/u", $str))
echo "한글 포함";
else
echo "한글 없음";
결과 : 한글포함
$str = "zzzzzd’zdz";
if (preg_match("/[\x{AC00}-\x{D7AF}]+/u", $str))
echo "한글 포함";
else
echo "한글 없음";
결과 : 한글없음
위 코드에서는 preg_match()
함수를 사용하여 입력 문자열 $str
에서 한글이 포함되어 있는지 여부를 판별합니다. u
모드를 사용하여 유니코드 문자열을 처리하도록 지정하고, 정규식 패턴으로는 한글 유니코드 범위를 나타내는 \x{AC00}-\x{D7AF}
를 사용합니다.
해당 정규식 패턴은 유니코드 블록인 'Hangul Syllables'에 해당하는 한글 문자들을 포함합니다. 따라서 한글이 포함되어 있는지 여부를 판별할 수 있습니다.
참고 : 챗GPT
!-->!-->
chatGPT에게 짜 달라고 해봤습니다.
function check_korean($string) {
return preg_match('/[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]/u', $string);
}
php 5.3 이상이라면 (당연하겠지만)
if (preg_match("/[가-힣]+/", $str)){
echo "한글 포함";
} else {
echo "한글 없음";
}
완성형 기준으로 이렇게 가-힣 도 쓰입니다^^;
답변을 작성하시기 전에 로그인 해주세요.