PHP에서 substr()을 사용하여 모두 영어로 된 문자열을 가로채고 싶다면 문제가 되지 않습니다. 여기에 중국어나 영어가 포함되어 있으면 비극이 되겠지만 걱정하지 마세요. 다른 방법을 사용하여 해결할 수 있습니다.
PHP는 잘못된 문자로 중국어 문자열을 가로챕니다. 이것은 제가 이전에 메타 정보 자동 생성에 대한 기사를 작성한 적이 있습니다. 기사를 설명 방법으로 사용했지만 IE6에서는 CSS를 로드할 수 없습니다. 다음은 보충 내용입니다.
먼저 IE6에서 CSS를 로드하지 못하는 이유는 파일이 왜곡되어 CSS를 로드하는 후속 링크가 IE6에서 올바르게 구문 분석되지 않기 때문입니다. . 그래서 저는 CSS가 없는 순수한 HTML 페이지를 보았습니다. 문제를 명확히 하고 나면 남은 문제는 쉽게 해결할 수 있는데, 이는 문자 깨짐을 방지하는 것입니다. Wange에서 제공하는 함수에 문자 깨짐이 있으므로 이 깨짐 코드 문제를 해결하기 위한 새로운 PHP 함수를 찾았습니다.
substr() 함수는 텍스트를 분할할 수 있지만 분할할 텍스트에 중국어 문자가 포함되어 있으면 종종 문제가 발생합니다.
mb_substr() 함수의 사용법은 문자열 인코딩을 설정하기 위해 끝에 매개변수가 하나 더 추가된다는 점을 제외하면 substr()과 유사합니다.
제가 Wange의 방식을 개선한 이유를 아셔야 합니다~~
좀 더 발전된 처리 방법을 소개합니다
예시 1
코드는 다음과 같습니다
function func_chgtitle($str,$len) { //$length我们允许字符串显示的最大长度 $tmpstr = ""; $strlen = $len; for($i = 0; $i < $strlen; $i++) { if(ord(substr($str, $i, 1)) > 0xa0) { $tmpstr .= substr($str, $i, 2); $i++; } else $tmpstr .= substr($str, $i, 1); } return $tmpstr; }
예제 2
문자열은 UTF-8로 인코딩되었으며 한자 하나가 3바이트를 차지합니다. :
public static function Chinesesubstr($str, $start, $len) { // $str은 문자열, $start는 문자열의 시작 위치, $len은 문자열의 길이를 나타냅니다.
$strlen = $start + $len; // $strlen을 사용하여 문자열의 전체 길이, 즉 문자열의 시작 위치부터 문자열의 전체 길이를 저장합니다.
코드는 다음과 같습니다
for($i = $start; $i < $strlen;) { if (ord ( substr ( $str, $i, 1 ) ) > 0xa0) { // 如果字符串中首个字节的ASCII序数 值大于0xa0,则表示汉字 $tmpstr .= substr ( $str, $i, 3 ); // 每次取出三位字符赋给变量$tmpstr,即等 于一个汉字 $i=$i+3; // 变量自加3 } else{ $tmpstr .= substr ( $str, $i, 1 ); // 如果不是汉字,则每次取出一位字符赋给 变量$tmpstr $i++; } } return $tmpstr; // 返回字符串 }
이 기사가 PHP 프로그래밍과 관련된 동일한 문제를 해결하는 모든 사람에게 도움이 되기를 바랍니다!
substr()에 의해 가로채는 중국어 문자 문제 해결에 대한 더 많은 PHP 관련 기사를 보려면 PHP 중국어 웹사이트에 주목하세요!