>  기사  >  PHP 프레임워크  >  thinkphp의 msubstr() 문자 차단 기능

thinkphp의 msubstr() 문자 차단 기능

PHPz
PHPz앞으로
2020-09-25 16:01:152571검색

thinkphp의 msubstr() 문자 차단 기능

추천 관련 튜토리얼: thinkphp 프레임워크 튜토리얼

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로 인코딩하면 줄임표가 표시되지 않습니다

최근 thinkphp로 프로그램을 작성할 때 이런 오류가 발생했습니다.Call to undefined 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;
 
}

정의한 후 로컬에서 사용할 수 있습니다. Use; 핵심 함수 파일을 사용하면 정의되지 않은 함수 msubstr()에 대한 호출 오류 문제를 해결할 수 있습니다. 프로젝트의 Common 디렉터리에 있는 common.php에 넣으면 유효하지 않다고 표시되지만, 저는 용이하게 하기 위해 Think의 핵심 파일을 변경하고 싶지 않습니다.

해결책:

주의 깊게 조사한 결과 프로젝트가 common.php를 자동으로 생성하지 않기 때문에 수동으로 빌드해야 한다는 사실이 밝혀졌습니다. am 로컬 프로젝트 아래 Common.php의 C는 대문자로 작성됩니다. 그런 다음 공식 코어 Common 아래의 common.php를 확인하고 C는 소문자입니다. 마지막으로 소문자로 변경하여 문제를 해결했습니다.

앞으로 이런 어리석은 실수를 하지 않도록 기록해 두세요!

더 많은 프로그래밍 관련 지식을 보려면

프로그래밍 소개를 방문하세요! !

위 내용은 thinkphp의 msubstr() 문자 차단 기능의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제