다중 언어 응용 프로그램에서 preg_replace ('/ [^ a-zA-Z0-9 \ s -_] /', '', $ val)를 사용하면 악센트 부호가있는 문자 또는 러시아 문자 ? 그렇지 않은 경우 위의 문자 만 허용하고 로캘 인식 기능을 사용하려면 사용자 입력을 필터링 할 수 있습니까?로케일 인식은 PHP에서 preg_replace입니다.
감사합니다.
codecowboy.
다중 언어 응용 프로그램에서 preg_replace ('/ [^ a-zA-Z0-9 \ s -_] /', '', $ val)를 사용하면 악센트 부호가있는 문자 또는 러시아 문자 ? 그렇지 않은 경우 위의 문자 만 허용하고 로캘 인식 기능을 사용하려면 사용자 입력을 필터링 할 수 있습니까?로케일 인식은 PHP에서 preg_replace입니다.
감사합니다.
codecowboy.
내가 찾을 수있는 유일한 유용한 정보 상태 this page of the manual에서있다 :
A "단어"문자는 언어의 모든 문자/숫자 일치하려면 unicode properties of the regex engine는 사용할 필요가 어떤 문자 또는 숫자 또는 밑줄 문자 즉, 펄의 "단어"일부가 될 수있는 문자입니다. 문자의 정의는 PCRE의 문자 테이블로 제어되며 로케일 특정 일치가 인 경우 일 수 있습니다. 예를 들어, "fr" (프랑스어) 로켈에서 128보다 큰 문자 코드는 악센트 부호가있는 문자에 사용되며 \ w와 일치합니다.
그럼에도 불구하고, 나는
... 당신이 원하는대로 작동하지만 것 내기 않을 것 확인하기 위해 :
유니 코드에 관해서는 설명서에 다음과 같이 쓰여 있습니다 :
PCRE는 천 십오 문자 데이터를 포함하는 구조를 검색 할 수 을 가지고 있기 때문에 유니 코드 속성에 의해 6,일치하는 문자는 빠른 아니다. 그렇기 때문에 \ d 및 \ w와 같은 전통적인 이스케이프 시퀀스는 PCRE에서 유니 코드 속성을 사용하지 않습니다.
그래서, 내가 ^^
을 추가해야합니다 ... 그것에 대해 호기심 안전의 솔루션이 될 수 있습니다아니요, 아니요, ASCII 문자 A-Z
만 일치합니다.
preg_replace('/[^\p{L}\p{N}]/', '', $string);