UTF - 8 정규 표현 식 은 한자 와 어떻게 일치 합 니까?
$str = " ";
// 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 " [".$str."] ";
}
else
{
echo " [".$str."] , !";
}
-----------------------
UTF - 8 일치: 자바 script 에서 문자열 이 중국어 라 고 판단 하 는 것 은 간단 합 니 다.
예 를 들 면:
var str = "php ";
if (/^[\u4e00-\u9fa5]+$/.test(str))
{ alert(" ");
}
else{ alert(" ");
}
php 에 서 는 16 진수 데 이 터 를 \ x 로 표시 합 니 다.
그래서 다음 코드 로 변환 합 니 다.
$str = "php ";
if (preg_match("/^[\x4e00-\x9fa5]+$/",$str))
{
print(" ");
}
else { print(" ");
}
잘못 보고 한 것 같 지 않 고 판단 한 결과 도 정확 한 것 같 지만 $str 를 '프로 그래 밍' 두 글자 로 바 꾼 결과 '이 문자열 이 모두 중국어 가 아 닙 니 다' 라 는 판단 이 정확 하지 않 은 것 같 습 니 다.중요:
찾 아 보 니 [x4e 00 - \ x9fa 5] 라 는 물건 에 대해 스스로 강 화 된 해석 phop 의 정규 중 [x4e 00 - \ x9fa 5] 을 만 들 었 는데 사실은 문자 와 문자 그룹의 개념, \ x {hex} 은 16 진수 를 표현 합 니 다. 주의해 야 할 것 은 hex 는 1 - 2 자리 일 수도 있 고 4 자리 일 수도 있 습 니 다. 그러나 4 자리 일 경우 괄호 를 붙 여야 합 니 다. 또한 x {FF} 보다 큰 hex 일 경우 u 수정자 와 연결 해 야 합 니 다. 그렇지 않 으 면 불법 오류 가 발생 할 수 있 습 니 다.
인터넷 에서 전각 문자 와 일치 하 는 정규 만 찾 을 수 있 습 니 다. ^[\x80-\xff]*^/ ,여기에 괄호 [\ u4e 00 - \ u9fa 5] 를 추가 하지 않 으 면 중국어 와 일치 할 수 있 지만 PHP 는 지원 되 지 않 습 니 다. 그런데 \ x 가 표시 하 는 16 진수 데 이 터 는 왜 js 에서 제공 하 는 범위 \ x4e 00 - \ x9fa 5 와 다 릅 니까?
그래서 나 는 아래 코드 로 바 뀌 었 는데 정말 정확 하 다 는 것 을 알 게 되 었 다.
$str = "php ";
if (preg_match("/^[\x{4e00}-\x{9fa5}]+$/u",$str))
{
print(" ");
}
else { print(" ");
}
php 에서 utf - 8 인 코딩 에서 정규 표현 식 으로 한자 와 일치 하 는 최종 정확 한 표현 식 인 / ^ [\ x {4e 00} - \ x {9fa 5}] + $/ u 를 알 게 되 었 습 니 다. 상기 글 을 참고 하여 다음 과 같은 테스트 코드 를 썼 습 니 다. (아래 코드 를 복사 하여. php 파일 로 저장)
[".$str."] ";
}
else
{
echo " [".$str."] , !";
} }
?
입력 문자 (숫자, 자모, 한자, 밑줄):GBK:
preg_match("/^[".chr(0xa1)."-".chr(0xff)."A-Za-z0-9_]+$/",$str); //GB2312
이상 의 내용 은 PHP 에서 UTF - 8 정규 표현 식 이 한자 의 모든 내용 과 어떻게 일치 하 는 지 에 대한 것 입 니 다. 마음 에 드 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.