> 백엔드 개발 > PHP 문제 > 잘못된 문자 없이 PHP로 문자열을 가로채는 방법

잘못된 문자 없이 PHP로 문자열을 가로채는 방법

(*-*)浩
풀어 주다: 2023-02-24 19:54:01
원래의
2768명이 탐색했습니다.

PHP에서 substr() 함수가 중국어 문자열을 가로채면 문자가 깨져서 나타날 수 있습니다. 이는 중국어와 서양 문자의 1바이트가 차지하는 바이트 수가 다르기 때문입니다.

잘못된 문자 없이 PHP로 문자열을 가로채는 방법

substr의 길이 매개변수는 GB2312로 인코딩할 때 한 중국어는 2바이트를 차지하고 영어는 1바이트를 차지합니다. 인코딩 시 한자는 2~3바이트, 영문이나 반각 구두점 문자는 1바이트를 차지할 수 있습니다. (권장 학습: 항목에서 마스터까지의 PHP 프로그래밍)

한자를 가로채기 위해 PHP 함수 substr을 직접 사용하면 문자가 깨질 수 있습니다. 주로 substr이 한자를 반으로 "톱질"하는 것입니다. 해결책:

1 문자가 깨지는 것을 방지하려면 mbstring 확장 라이브러리의 mb_substr 차단을 사용하세요.

2. 가로채기 기능을 직접 작성하지만 mbstring 확장 라이브러리를 사용하는 것만큼 효율성이 높지 않습니다.

3. 단지 가로채는 문자열을 출력하는 것이라면 substr($str, 0, 30).chr(0)과 같이 구현할 수 있습니다.

substr() 함수를 사용하면 텍스트를 분할할 수 있지만, 분할하려는 텍스트에 한자가 포함된 경우 문제가 자주 발생합니다. 이 경우 mb_substr()/mb_strcut 함수를 사용할 수 있습니다.

mb_substr()/mb_strcut의 사용법은 문자열 인코딩을 설정하기 위해 mb_substr()/mb_strcut 끝에 매개변수를 하나 더 추가해야 한다는 점을 제외하면 substr()과 유사합니다. 대부분의 서버에서는 php_mbstring.dll을 열지 않으므로 php.ini에서 php_mbstring.dll을 열어야 합니다.

예:

<?php
echo mb_substr(&#39;这样一来我的字符串就不会有乱码^_^&#39;, 0, 7, &#39;utf-8&#39;);
?>
로그인 후 복사

출력: 이런 식으로 내 말은
# 🎜 🎜#

<?php
echo mb_strcut(&#39;这样一来我的字符串就不会有乱码^_^&#39;, 0, 7, &#39;utf-8&#39;);
?>
로그인 후 복사
출력: 다음과 같습니다

위의 예에서 볼 수 있듯이 mb_substr은 문자를 단어로 분할하는 반면 mb_strcut은 문자를 바이트로 분할하지만 둘 다 반 문자는 없습니다. 현상.

위 내용은 잘못된 문자 없이 PHP로 문자열을 가로채는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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