2012-08-24 6 views
3

나는 문자열 조작 함수를위한 UTF8 안전한 대안을 찾고 있었다. 나는 많은 다른 의견과 제안을 발견했다. 다음 함수가 UTF-8에서 문제를 일으킬 수 있는지 묻고 싶습니다. 그렇다면 대신 사용해야하는 것은 무엇입니까? 나는 PHP 매뉴얼에서 mb_ 접두사가 붙은 함수 목록을 알고 있지만, 내가 사용하고있는 모든 함수가 없다.PHP 다중 바이트 대체물 UTF8

기능은 다음과 같습니다, 않는 str_replace,는 preg_match, preg_replace이다를, 내파 폭발

는 안전하게 UTF8 문자로 조작해야하는 경우는 다음과 같이 그것을 할 수

+1

'preg_' 패밀리는 유니 코드와 잘 작동하지만, 문자열에서 유니 코드를 사용한다는 매개 변수를 지정해야합니다. –

+0

@AleksG 응답 해 주셔서 감사합니다. 내파로 폭발하고 str_replace로 무엇을 알고 있습니까? – sczdavos

+0

모든 것이 유효한 UTF-8 인 경우 UTF-8로 안전합니다. 유효한 UTF-8 바이트 시퀀스는 다른 UTF-8 바이트 시퀀스의 하위 바이트 스트림이 아닙니다. – Esailija

답변

1

감사 :

mb_internal_encoding('UTF-8'); 
preg_replace('`...`u', '...', $string) // with the u (unicode) modifier 
+3

'mb_internal_encoding'은'mb_' 함수에만 유용합니다. 'preg_' 함수와 아무런 관련이 없습니다. – deceze

+0

감히 대답하지 말고 – Peon

+0

OK. – deceze

5

explode은 동일한 바이트 시퀀스를 찾고 그 시점에서 문자열을 분리합니다. UTF-8은 ASCII와 역 호환이 가능하기 때문에 걱정할 필요가 없으며 정상적으로 작동합니다. implode은 문자열을 함께 조합하기 때문에 UTF-8 속성 때문에 잘 작동합니다. str_replace도 같은 이유로 작동합니다. 을 사용하는 한 preg_ 함수는 정상적으로 작동합니다.