2013-01-11 2 views
1

다른 언어로 문자 및 공백 (단순 단어)을 검색하려고합니다. 숫자 나 구두점을 찾으면 검색 예외가 발생합니다. 위키 백과에서 찾은 UTF-8 숫자 문자로 작성한 정규식을 테스트 할 때 내 결과는 항상 일치로 돌아옵니다. 모든 숫자가 문자로 간주되지 않는 한 그 이유는 당황 스럽습니다.다국어 숫자는 문자로 계산합니까?

$were_bad_characters_found = preg_match('/[^\p{L}\p{Zs}]+/us', $data); 

질문에 대한 답변 :

5 여기 http://en.wikipedia.org/wiki/Cyrillic_script

5 Є 코드입니다 : 여기

내가 해봤 자입니다 그것은 언제나 그렇습니다. 부적절한 문자는 발견되지 않았습니다.

워드 프로세서를 기반으로 보았을 때이 기능이 작동하는 것으로 보였습니다. 실제로 간단한 영어 숫자를 실행하려고하면 실제로 작동하지만 다국어 문자가 마자 나면 곧바로 롤오버가됩니다. 다른 일반적인 시나리오를 감지하기위한 다양한 변형이 있으며 모든 utf8 regex 코드는 영어 문자에만 잘 작동하는 것 같습니다. 생각?

답변

0

으로 표시된 문자는 자입니다.

  • U+4F0D 伍는 숫자가 아닌 및 숫자가 아닌 해석이있다.

  • U+0404 Є 숫자가 아니며 종류에 관계없이 숫자 해석이 가능합니다.

properties of english digits in unicode은 문자가 아닌 숫자입니다. PHP에서는 숫자를 맞추기 위해 \p{Nd}을 사용할 수 있습니다. 하지만 당신의 정규식은 잘 작동합니다.

+0

빠른 답장을 보내 주셔서 감사합니다. 편지가 아닌 숫자를 제공 할 수 있습니까? Wiki가 나를 잘못 이끌고 있습니다. 테스트 할 데이터가 없어도이 코드를 테스트하기가 어렵습니다. –

+0

@JeffreyGilbert digits 속성에 대해이 xml 파일을보고 해당 문자로 테스트하십시오. http://www.unicode.org/repos/cldr/trunk/common/supplemental/numberingSystems.xml – Esailija