2011-08-22 4 views

답변

0

나는 내 앞에있는 PHP 환경이 없기 때문에 내가 두 번째 질문을 테스트 할 수 없습니다,하지만 첫 번째 질문에 대한 대답은 NO입니다. ASCII 문자 만 처리하는 경우에는 /u이 필요 없습니다.

1

패턴에 utf 문자가 포함되어 있는지 여부는 아니지만 일치하는 문자열과 일치하는지 여부는 아닙니다. 비 ASCII 문자를 찾지 못할 수도 있지만 문자열에 멀티 바이트 문자가있는 경우 패턴은 UTF 문자의 "추가"바이트 중 하나와 일치 할 수 있습니다.

+0

멀티 바이트 시퀀스가 ​​7 비트 ASCII 코드를 바이트로 포함하지는 않지만 UTF-8의 요점은 아닙니까? 따라서 정규식 엔진이 8 비트 정리 인 경우 멀티 바이트 내용에 관계없이 UTF-8로 인코딩 된 문자열의 ASCII 문자와 일치하지 않아도 괜찮습니다. 결국 모든 멀티 바이트 UTF-8 시퀀스에는 항상 첫 번째 비트가 설정된 바이트가 있습니다. –

0

예를 들어 단일 문자 문자열과 일치하는 /^.$/을 가져옵니다.

var_dump(preg_match('/^.$/u','族')); 
var_dump(preg_match('/^.$/','族')); 

결과 :

int(1) 
int(0) 

그래서 예/u는 당신의 패턴이 아스키 테이블 외부 문자가없는 경우에도 변화를 않습니다.

관련 문제