2014-07-06 2 views
4

유니 코드 7.0.0이 2014 년 6 월에 릴리스되었습니다. PCRE 릴리스에는 업데이트 된 PCRE 라이브러리가 포함될 때까지 기다리는 데 시간이 걸릴 수 있습니다. PCRE/PHP의 현재 유니 코드 버전은 2014 년 7 월 현재 6.3.0입니다. PHP 스크립트에서 사용되는 유니 코드 버전을 감지하는 방법이 있습니까? phpinfo()은이 문제에 관해 침묵합니다.PHP와 PCRE에서 유니 코드 버전을 감지하는 방법은 무엇입니까?

유니 코드 버전이 PCRE를 제외한 다른 점과 차이가 있습니까? 나는 (내가 아는 한) 코드 포인트가 할당되었는지 여부, 또는 블록 (script), 문자 (script), 문자 (letter), 마크 (mark) 등 어떤 프로퍼티를 가지는지 상관하지 않기 때문에 mb_string과 같은 다른 라이브러리에 어떻게 영향을 주는지 나는 알 수 없다. 기타.).

+0

관심있는 특정 차이가 있습니까? 어쩌면 기능을 감지 할 수 있습니다. 예 : 특정 코드 포인트 또는 유사한 PCRE의 동작을 테스트하십시오. –

+0

@ NisseEngström 사실, 추가 된 코드 포인트를 감지 할 수 있습니다 (모든 버전에 이전 버전의 코드 포인트가 추가되었다고 가정). 아래쪽은 유니 코드 버전의 라이브러리를 유지 관리해야한다는 것입니다. 또한 최신 릴리스에서 알려진 코드에 대해 모든 코드 포인트를 확인하지 않으면 향후 버전을 확인할 방법이 없습니다. 그럼에도 불구하고 당신이 아는 모든 것은 그것이 미래의 버전이라는 것입니다. 변화가 얼마나 중요한지는 아닙니다. –

+0

나는 신 할라에 관심이있다. 주어진 문자열이 Sinhala이고 할당 된 코드 포인트만을 사용하는지 검사하는 코드를 작성하면 PHP가 다음 PCRE 버전> 8.35로 업데이트되면 다르게 작동합니다. 나는 현재 특정 문자를 검사하고'[\ P {Cn} \ x {0DE6} - \ x {0DEF}]'에 코드 포인트를 수동으로 추가하는 것을 제외하고는이를 탐지 할 방법이 없다. 앞으로 Sinhala 블록에 더 많은 코드 포인트를 할당하면 코드가 더욱 복잡해집니다. ''유니 코드 $ cur_ver에 기초한 결과. 최신 유니 코드는 $ new_ver "'라고 말하는 것이 훨씬 쉬울 것입니다. –

답변

2

필자는 PCRE의 관리자와 연락을했고, 컴파일 된 유니 코드 버전을 반환 할 수있는 기능이 없다고 알려줍니다. 따라서 PHP는이를 알 수 없습니다. 그는이 기능을 향후 PCRE 버전에 추가 할 예정이지만 약속 할 수는 없습니다.

2

PCRE_VERSION 사용자 지정 빌드 옵션 (--with-pcre-regex=DIR) 및 패치를 무시하면 도움이 될 수 있습니다.

> php -r 'echo PCRE_VERSION, PHP_EOL;' 
> 8.34 2013-12-15 

다음 표는 PHP와 PCRE 및 유니 코드 버전 간의 통신을 보여줍니다.

PHP      | PCRE | Unicode 
----------------------------------------- 
5.5.10     |8.34 | 6.3.0 
5.5.0/5.4.14/5.3.24 |8.32 | 6.2.0 
5.4.9/5.3.19 8.31 |8.31 | 6.1.0 
5.3.0     |7.9 | 5.1.0 

Unicode | PCRE 
------------------- 
7.0.0 | 8.36 
6.3.0 | 8.34, 8.35 
6.2.0 | 8.32 
6.1.0 | 8.31 
6.0.0 | 8.13, 8.20, 8.21, 8.30 
5.2.0 | 8.02, 8.10, 8.11, 8.12 
5.1.0 | 7.9, 8.0 
5.0.0 | 7.0 

소스

관련 문제