> 백엔드 개발 > PHP 튜토리얼 > rtrim 기능의 함정

rtrim 기능의 함정

WBOY
풀어 주다: 2016-07-28 08:25:48
원래의
1207명이 탐색했습니다.

오늘 발생한 문제를 간략하게 설명하세요.
내 코드에는 다음 코드 세그먼트가 있습니다.

<code><span><span><?php</span>
    header(<span>"Content-type:text/html;charset=utf8"</span>);
    <span>echo</span> rtrim(<span>"威、"</span>,<span>"、"</span>);</span></code>
로그인 후 복사

원래 기대했던 바는 "power"를 출력하는 것이었습니다. 그러나 그것은 역효과를 냈고 여러 개의 잘못된 코드가 출력되었습니다. 왜 이런가요? 자세히 설명하겠습니다.
우선, rtrim 함수의 기능을 알아야 합니다. 두 번째 매개변수는 문자열이며, 그 안의 각 문자는 제거할 문자로 제거됩니다. 예:

<code><span><span><?php</span><span>echo</span> rtrim(<span>"blakefezabc"</span>, <span>"cab"</span>);
    <span>//output blakefez</span></span></code>
로그인 후 복사

예, 출력 결과는 blakefez입니다.
이 함수의 구현은 비교적 간단해야 합니다.
① 첫 번째 매개변수의 마지막 문자부터 왼쪽으로 탐색하여 해당 바이트가 두 번째 매개변수에 있는지 확인합니다.
② 존재하는 경우 바이트를 제거하고 첫 번째 단계를 계속합니다. 그렇지 않다면 종료하세요.
위에서는 바이트를 사용했습니다. 예, 이 함수는 멀티바이트로부터 안전하지 않습니다. 즉, 매개변수의 일부 문자가 멀티바이트인 경우 원하지 않는 결과가 발생합니다. 예를 들어, 처음에 언급한 rtrim("伟,", ",")입니다. "Wei"와 ","는 모두 utf8로 인코딩되어 있기 때문입니다. 즉, 멀티바이트 문자입니다. 그 중 "威"의 인코딩은 0xE5 0xA8 0x81이고 ","의 인코딩은 0xE3 0x80 0x81입니다. 따라서 rtrim 함수의 눈에는 다음과 같이 보입니다. rtrim("0xE5 0xA8 0x81 0xE3 0x80 0x81 ", "0xE3 0x80 0x81”); 따라서 최종 출력 결과는 0xE5 0xA8입니다. 이때 utf8 인코딩으로 변환하면 왜곡됩니다.

').addClass('사전 번호 매기기').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });

위 내용은 rtrim 기능의 단점을 소개했으며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿