>  기사  >  백엔드 개발  >  ThinkPHP 템플릿 substr의 가로채기 문자열 기능에 대한 자세한 설명

ThinkPHP 템플릿 substr의 가로채기 문자열 기능에 대한 자세한 설명

高洛峰
高洛峰원래의
2017-01-11 10:52:092364검색

이 기사의 예에서는 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로 인코딩하고 줄임표를 표시하지 마세요

최근 thinkphp를 사용하여 프로그램을 작성할 때 Call to unundefined function msubstr()과 같은 오류가 발생했습니다.

원인 분석:

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

문제 발생:

로컬에서 쓰기 시작했는데 Windows 운영 체제에서 오류가 보고되지 않았고, 이후 Linux 서버에 프로젝트를 업로드했습니다. 정의되지 않은 함수 msubstr()에 대한 오류가 보고되었습니다. > 문제 해결:

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

그 이후에는 다음과 같습니다. 이 함수를 Thinkphp 핵심 함수 파일 아래에 넣으면 정의되지 않은 함수 msubstr() 호출 문제를 해결할 수 있다고 말하는 친구도 있었습니다. 오류를 보고할 때 다음과 같은 경우 유효하지 않다고 합니다. 내 프로젝트의 Common 디렉터리에 있는 common.php 아래에 배치하지만 향후 업그레이드를 용이하게 하기 위해 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;
}

해결책:

스틸 파일은 Linx에 있습니다. 대문자 사용 문제에 대해서는 자세히 조사한 결과 프로젝트가 common.php를 자동으로 생성하지 않기 때문에 수동으로 빌드해야 한다는 것을 발견했습니다. 로컬 프로젝트 아래 Common.php에 C를 대문자로 쓴 것으로 나타났습니다. , 그리고 나서 common.php의 C가 소문자인지 확인했습니다. 드디어 소문자로 바꿔서 문제가 해결되었습니다.

앞으로 이런 멍청한 실수를 하지 않도록 녹음해두세요!

이 글이 thinkPHP 프레임워크를 기반으로 하는 모든 분들의 PHP 프로그램 설계에 도움이 되기를 바랍니다.

ThinkPHP 템플릿 substr 차단 문자열 기능에 대한 자세한 설명은 PHP 중국어 홈페이지를 참고해주세요!

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