>백엔드 개발 >PHP 튜토리얼 >thinkphp의 문자 가로채기 함수 msubstr() 사용 분석

thinkphp의 문자 가로채기 함수 msubstr() 사용 분석

PHP中文网
PHP中文网원래의
2016-07-29 09:07:10890검색

이 글에서는 thinkphp의 문자 가로채기 함수 msubstr()의 사용법을 주로 소개합니다. thinkPHP의 문자 가로채기 함수 msubstr()의 기능과 정의, 사용법, 주의사항 등을 사례를 바탕으로 자세히 분석합니다. 다음

이 글의 예제는 thinkphp에서 문자 차단 함수 msubstr()의 사용법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 자세한 내용은 다음과 같습니다.

ThinkPHP에는 다음과 같은 문자 차단 기능 msubstr()이 내장되어 있습니다.

msubstr($str, $ start=0, $length, $charset="utf-8", $suffix=true)

$str: 차단할 문자열
$start=0: 시작 위치, 시작 기본적으로 0부터
$ length: 가로채기 길이
$charset="utf-8": 문자 인코딩, 기본 UTF-8
$suffix=true: 가로채는 문자 뒤에 타원을 표시할지 여부, 기본값은 표시하려면 true, 표시하지 않으려면 false

는 다음과 같이 호출됩니다.

코드는 다음과 같습니다.

{$vo.title|msubstr=5,5,'utf-8',false}

설명: $vo.title 문자열을 가로채서 5번째 문자부터 5자를 가로채어 UTF-8로 인코딩하고 줄임표를 표시하지 않습니다.

최근에 a를 작성할 때 thinkphp를 사용하는 프로그램에서 Call to undefine function msubstr(),

과 같은 오류가 발생했습니다. 원인 분석:

msubstr|msubstr=###,5,5 ,'utf-8',false 함수는 문자 수를 가로채기 위해 프런트 엔드 템플릿에서 사용됩니다.

문제 발생:

작성 시작 시 로컬에서는 Windows 운영 체제에서 오류가 없다고 보고했습니다. 나중에 프로젝트를 Linux 서버에 업로드했을 때 프론트 데스크에 액세스하여 Call to unundefined function(msubstr() 오류)을 보고했습니다.

문제 해결 :

think 공식 웹사이트에 공개 함수 라이브러리 아래에 이 함수를 정의하는 친구들이 게시된 것을 보기 시작했습니다. 함수는 다음과 같습니다.

function msubstr($str, $start=0, $length, $charset="utf-8", $suffix=false){
 if(function_exists("mb_substr")){
 if($suffix)
 return mb_substr($str, $start, $length, $charset)."...";
 else
 return mb_substr($str, $start, $length, $charset);
 }elseif(function_exists('iconv_substr')) {
 if($suffix)
 return iconv_substr($str,$start,$length,$charset)."...";
 else
 return iconv_substr($str,$start,$length,$charset);
 }
 $re['utf-8'] = "/[x01-x7f]|[xc2-xdf][x80-xbf]|[xe0-xef][x80-xbf]{2}|[xf0-xff][x80-xbf]{3}/";
 $re['gb2312'] = "/[x01-x7f]|[xb0-xf7][xa0-xfe]/";
 $re['gbk'] = "/[x01-x7f]|[x81-xfe][x40-xfe]/";
 $re['big5'] = "/[x01-x7f]|[x81-xfe]([x40-x7e]|xa1-xfe])/";
 preg_match_all($re[$charset], $str, $match);
 $slice = join("",array_slice($match[0], $start, $length));
 if($suffix) return $slice."…";
 return $slice;
}

정의한 후에는 로컬에서 사용할 수 있습니다. 또한 일부 친구는 이 함수를 Thinkphp 핵심 함수 파일에 배치해야 한다고 말했습니다. 다음은 정의되지 않은 함수 msubstr( ) 오류. 프로젝트의 Common 디렉터리에 있는 common.php에 넣으면 유효하지 않다는 메시지가 표시되지만 향후 업그레이드를 위해 Think의 핵심 파일을 변경하고 싶지 않습니다.

솔루션:

Linux에서는 여전히 파일 케이스 문제입니다. 주의 깊게 살펴본 결과 프로젝트에서 common.php가 자동으로 생성되지 않기 때문에 수동으로 빌드해야 한다는 것을 알게 되었습니다. .php의 C는 대문자로 작성된 다음 공식 코어 Common에서 common.php를 확인하십시오. C는 소문자입니다. 드디어 소문자로 변경해서 문제를 해결했습니다.

앞으로 이런 저급 실수가 없도록 기록해두세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.