>  기사  >  백엔드 개발  >  UTF-8 한자 정규식

UTF-8 한자 정규식

WBOY
WBOY원래의
2016-08-08 09:19:13982검색

원본 링크: http://blog.csdn.net/wide288/article/details/30066639

$str = "Programming";
// if(!preg_match("/^[ x{4e00}-x{9fa5}A-Za-z0-9_]+$/u",$str)) //UTF-8 중국어 영숫자 밑줄 정규 표현식
if(!preg_match("/^ [x {4e00}-x{9fa5}]+$/u",$str)) //UTF-8 중국어 영숫자 밑줄 정규식
{
echo "You 입력한 [" .$str."] 잘못된 문자 ";
}
else
{
echo "입력하신 ["입니다. ]완전히 합법적이며 통과되었습니다!";

}

------------------------- -- ---

UTF-8 매칭:
자바스크립트에서는 문자열이 중국어인지 판별하는 것이 매우 간단합니다. 예: var str = "php 프로그래밍"; if (/^[u4e00-u9fa5]+$/.test(str)) { Alert("이 문자열은 모두 중국어입니다.") } else{ 경고("이 문자열 모두 중국어로 된 것은 아닙니다."); }
PHP에서 x는 16진수 데이터를 나타내는 데 사용됩니다. 따라서 다음 코드로 변환됩니다. $str = "php 프로그래밍"; if (preg_match("/^[x4e00-x9fa5]+$/",$str)) { print("이 문자열은 모두 중국어입니다." ); } else { print("모든 문자열이 중국어로 되어 있지 않습니다.") } 더 이상 오류가 보고되지 않는 것으로 보이며, 판단 결과는 "programming"이라는 단어로 대체됩니다. , 결과는 여전히 "모든 문자열이 중국어로 되어 있지 않습니다"라고 표시됩니다. 이 판단은 아직 충분히 정확하지 않은 것 같습니다.
중요: "정규식 능숙"을 확인한 결과 [x4e00-x9fa5]에 대해 제가 직접 설명을 강화한 것을 발견했습니다.
php의 정규식에서 [x4e00-x9fa5]는 실제로 문자이고 문자그룹 x{hex}의 개념은 16진수를 표현하는데, 16진수는 1~2자리 또는 4자리가 될 수 있으나 4자리인 경우에는
에 중괄호를 추가해야 합니다. 동시에 16진수가 x{FF}보다 크면 u 수정자와 함께 사용해야 합니다. 그렇지 않으면 불법 오류가 발생합니다.
전자 문자 일치에 대한 일반 규칙만 온라인에서 찾을 수 있습니다: ^[x80- xff]*^/ , 여기서 중괄호 [u4e00-u9fa5]를 추가하지 않고도 중국어를 일치시킬 수 있지만 PHP는 이를 지원하지 않습니다. 그런데 x로 표시되는 16진수 데이터인데 왜 js에서 제공하는 x4e00-x9fa5 범위와 다른가요? ? 그래서 아래 코드로 변경했는데 정말 정확하다는 것을 알았습니다. $str = "php 프로그래밍"; if (preg_match("/^[x{4e00}-x{9fa5}]+$/u",$str ) ) { print("이 문자열은 모두 중국어입니다."); } else { print("이 문자열은 모두 중국어가 아닙니다.") }
PHP에서 UTF-8 인코딩에서 중국어 문자를 일치시키는 정규식을 사용하는 방법을 알고 있습니다. 최종 정답 - /^[x{4e00}-x{9fa5}]+$/u, 위 글을 참조하여 다음과 같은 테스트 코드를 작성했습니다(다음 코드를 복사하여 .php 파일로 저장)
"; else ;/font>" } } ?>

문자, 밑줄):

GBK:
preg_match("/^[".chr (0xa1)."-".chr(0xff)."A-Za-z0-9_]+$/",$str) //GB2312 한자 영숫자 밑줄 정규식

위에서는 UTF-8 한자 정규식을 소개했으며 그 내용도 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.