나는 다음과 같은 코드가 있습니다preg_replace, 문자가 이스케이프되고 악센트 부호가있는 문자/u는 하나 개의 서버에서 작동하지만 다른
이preg_replace('/[^\w-]/u','.','Bréánná MÓÚLÍN');
서버 A (PHP 5.3.5)에 반환
"Bréánná.Móúlín"(예상대로)를
그러나, 서버 B에 (PHP 5.2.11)이 반환
"Br..n..M..ln"(안 내가 전혀 원하는)
바로 생각에 나는 오전 이것은 PCRE_UCP가 모든 것이 컴파일 될 때 설정되었는지 여부에 달려 있습니다.
이 경우 무시할 수있는 방법이 있습니까?
그런 문자를 '표준'문자로 쉽게 대체 할 수있는 방법이 있습니까?
흥미 내가 대체하려고 해요 : 나는 (분명히 멀티 바이트 EREG 기능 중 하나, 유니 코드 문자 이스케이프 시퀀스를 지원하지 않는) 문자가 정규식 문자열을 생성하기 위해 다음과 같은 자바 프로그램으로 XML Standard's definition of
NameChar
범위 사용 비 단어 문자 (하이픈이 아닌 문자)도. 그러나 그 코드는 성취하지 못합니다. \\ pL 및 \\ pN은 무엇입니까? 나는 그들에게 익숙하지 않아서 내가 원하는 것을하기 위해 그것을 어떻게 바꿀 지 모른다. –@Toukakoukan : 유니 코드 속성에 따라 문자 집합을 지정합니다. 참조 : http://www.php.net/manual/en/regexp.reference.unicode.php –
@Toukakoukan : 멀티 바이트 ereg 함수가 특별한'\ p {...}'PCRE를 지원하지 않는다는 것을 알았습니다. 유니 코드 속성으로 문자를 지정하는 구문입니다. 내 업데이트 답변을 참조하십시오. –