2014-01-22 1 views
0

저는 mb_가 utf8 문자를 다루기위한 것이라는 것을 알고 있지만 여전히 제 문제를 해결하지 못했습니다.php, mb_substr가 유니 코드 문자를 없앱니다.

óóóóóóóóóóóóóóóóóóóóóóóóóóóóóóó

mb_substr ($oooo, 0,17, 'UTF-8'); 

óóóóóóóóóóóóóóóóó & OAC

그래서 마지막 문자 damag :

그래서 나는이 문자열을 가지고 es.

+2

문자열에 ** 바이트 **가 있는지 확인하고 게시하십시오. 적어도 "ó"중 일부는 실제로 엔티티가 유니 코드 코드 포인트 U + 00F3 (* any * 인코딩)이 아니라 '& oacute;'를 이스케이프 한 결과입니다. – delnan

+1

힌트 : PHP는 HTML을 렌더링하지 않습니다. –

+0

델 넌, 어떻게? –

답변

3

귀하의 문자열은 귀하의 문자열은 실제로 실제로 하지

$str = 'óóóóóóóóóóóóóóóóóóóóóóóóóóóóóóó'; 

입니다 : 브라우저에서 보았을 때

$str = 'óóóóóóóó...'; 

이 브라우저는 물론 "O"렌더링하지만, 그 중입니다 PHP에 관심이 없습니다.

최상의 해결책은 실제로 UTF-8로 인코딩 된 문자 "óóóóóóóóóóóóóóó"에 컨텐츠를 넣은 다음 코드를 그대로 사용하는 것입니다. 현재 문자열이 작업을하려면 먼저 HTML 엔티티를 디코딩 할 필요가 : 당신은 지금 실제 UTF-8을 출력하고 있기 때문에

$str = 'óóóóóóóó...'; 
$str = html_entity_decode($str, ENT_COMPAT, 'UTF-8'); 
echo mb_substr($str, 0, 17, 'UTF-8'); 

당신은 물론, 출력 인코딩을 돌볼 필요가 다음 것이다 브라우저가 이해할 필요가 있습니다. UTF-8 all the way through을 참조하십시오.

관련 문제